20.06.10

Сегодня я покажу каким образом можно добиться построения замечательного эффекта увеличения изображений при наведении мыши.

Этот эффект будет полезен при создании различного рода галерей в тех случаях, когда требуется “вдохнуть жизнь” в получающееся творение.

На вооружение мы как всегда возьмем jQuery и CSS. Итак, вперед!


Для начала – демо.

Теперь разберем как это сделать.
Нам понадобится обыкновенный список наших превьюшек:

XHTML
1
2
3
4
5
6
7
8
9
10
11
<ul class="thumb">
    <li><a href="#"><img src="thumb1.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb2.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb3.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb4.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb5.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb6.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb7.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb8.jpg" alt="" /></a></li>
    <li><a href="#"><img src="thumb9.jpg" alt="" /></a></li>
</ul>

Теперь нужно “приодеть” наш список с помощью CSS, при этом уделив особое внимание тому факту, что изображение, на которое в данный момент наведен курсор мыши, должно быть поверх всех остальных изображений:

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ul.thumb {
    float: left;
    list-style: none;
    margin: 0; padding: 10px;
    width: 360px;
}
ul.thumb li {
    margin: 0; padding: 5px;
    float: left;
    position: relative;
    width: 110px;
    height: 110px;
}
ul.thumb li img {
    width: 100px; height: 100px;
    -ms-interpolation-mode: bicubic;
    border: 1px solid #ddd;
    padding: 5px;
    background: #f0f0f0;
    position: absolute;
    left: 0; top: 0;
}
ul.thumb li img.hover {
    background:url(thumb_bg.png) no-repeat center center;
    border: none;
}

Осталось лишь добавить интерактивности с помощью jQuery:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$("ul.thumb li").hover(function() {
    $(this).css({'z-index' : '10'});
    $(this).find('img').addClass("hover").stop()
        .animate({
            marginTop: '-110px',
            marginLeft: '-110px',
            top: '50%',
            left: '50%',
            width: '174px',
            height: '174px',
            padding: '20px'
        }, 200);
    } , function() {
    $(this).css({'z-index' : '0'});
    $(this).find('img').removeClass("hover").stop()
        .animate({
            marginTop: '0',
            marginLeft: '0',
            top: '0',
            left: '0',
            width: '100px',
            height: '100px',
            padding: '5px'
        }, 400);
});

Мы всего-навсего изменяем размер превью в тот момент, когда указатель мыши наведен на него, при этом устанавливая свойство z-index таким образом, чтобы текущая превьюшка находилась выше других.
Эффект того, что превью расширяется от центра, достигается за счет установки соответствующих margin’ов и размеров изображения.
Ну и напоследок – архив с исходниками.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>