papilio

Записи с меткой «jquery»

Динамическая иконка

В предыдущем посте мы создали иконку в Corel Draw. Теперь нам надо сделать так, чтобы при наведении на неё она либо плавно увеличивалась, либо просто меняла прозрачность. Всё это мы попробуем реализовать с помощью JavaScript фреймворка jQuery.

Сначала нам надо просто скачать последнюю версию jQuery, переименовать в jquery.js и положить в папку с программой.

[cc lang="html"]
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>
<html xmlns="http://www.w3.org/1999/xhtml">

<head profile="http://gmpg.org/xfn/11">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="jquery.js"></script>
[/cc]

Теперь создадим главный слой wrap, в котором будет содержаться все остальные слои:

[cc lang="html"]
<div id="wrap">
...
</div>
[/cc]

Внутрь него вложим два слоя: один будет содержать иконку small.png размера 70 пикселей, а другой иконку big.png размером 80 пикселей. Второй слой как раз и будет отображаться при наведении на иконку мышкой.

[cc lang="html"]
<div id="wrap">
<div id="small_ball"></div>
<div id="big_ball"></div>
</div>
[/cc]

Определим для этих слоёв свойства. Во-первых, чтобы красиво смотрелось сделаем выравнивание по центру. Во-вторых, два слоя, содержащие изображение, поместим вниз слоя wrap для того, чтобы при увеличении тень смотрелась естественней — для этого определим их позицией absolute, а слой wrap с relative. Также выключим отображение второго слоя с большой иконкой.

[cc lang="css"]
#wrap {
position:relative;
width:200px; height:100px;
text-align:center;
border:1px solid black;
}
#small_ball {
position:absolute;
width:90px;
bottom:0; left:50%;
margin-left:-45px;
z-index:1;
}
#big_ball {
position:absolute;
width:90px;
bottom:0; left:50%;
margin-left:-45px;
z-index:2;
display:none;
}
[/cc]

Теперь самое интересное: нам надо сделать так, чтобы тогда, когда курсор мышки находится над иконкой, она увеличилась в размере, а когда убираем курсор — уменьшалась. Для первого случая это событие mouseover, для второго — mouseout. В jQuery всё достаточно легко и просто. Многое описано в документации. Чтобы плавно увеличить иконку, воспользуемся эффектом fadeIn:

[cc lang="javascript"]
$(document).ready (function (){
$(«#small_ball»).mouseover (function (){
$(«#big_ball»).fadeIn (500);
});
$(«#big_ball»).mouseout (function (){
$(«#big_ball»).fadeOut (300);
});
});
[/cc]

Из этого кода видно, что мы увеличиваем прозрачность элемента с идентификатором big_ball (слоя с большой иконкой) за 500 миллисекунд при возникновении события mouseover на элементе small_ball (слой с маленькой иконкой).

Вот, что получилось:

Уже после создания этого я нашёл интересное решение, как раз связанное с Dock: Fisheye от Interface. Советую присмотреться.

Метки: , , , ,