Сегодня я покажу каким образом можно добиться построения замечательного эффекта увеличения изображений при наведении мыши.
Этот эффект будет полезен при создании различного рода галерей в тех случаях, когда требуется “вдохнуть жизнь” в получающееся творение.
На вооружение мы как всегда возьмем jQuery и CSS. Итак, вперед!
Для начала – демо.
Теперь разберем как это сделать.
Нам понадобится обыкновенный список наших превьюшек:
|
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, при этом уделив особое внимание тому факту, что изображение, на которое в данный момент наведен курсор мыши, должно быть поверх всех остальных изображений:
|
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:
|
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’ов и размеров изображения.
Ну и напоследок – архив с исходниками.