Те, кто думаю, что красивые эффект можно создать только с помощью флэша, ошибаются. В данной статье я научу вас, как создавать эффект выдвижения фото при наведении курсора мыши.
Возможно, вы видели подобный эффект, сделанный во Flash. Но во-первых - Flash есть не у всех, во вторых - размер загружаемого Flash ролика несоизмерима по размерам с небольшим скриптом на JavaScript.
Пусть есть некоторое количество картинок (желательно квадратных для более красивого эффект выдвижения). Необходимо, что при наведении на одну из картинок она плавно увеличивалась в размерах, то есть создавалось ощущение, что она плавно выдвигается. Для придания изящности, необходимо также добавить тень небольшим картинкам, которая исчезает по мере увеличения изображения.
Следующий код позволяет продемонстрировать данный эффект:
- < style>
- .image { cursor: hand;
- border: 1px solid;
- FILTER:progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength=30)}
- < /style>
- < script language=JavaScript>
- var pic = new Array("pic0", "pic1", "pic2", "pic3");
- var x = new Array(120,120,120,120,120);
- var y = new Array(120,120,120,120,120);
- var sh = new Array(30,30,30,30,30);
- var t = new Array();
- function tonext(a) {
- x[a]+=5;
- y[a]+=5;
- sh[a]-=2;
- document.getElementById(pic[a]).width=x[a];
- document.getElementById(pic[a]).height=y[a];
- document.getElementById(pic[a]).style.filter='progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength='
- +sh[a]+')';
- t[a] = setTimeout("tonext("+a+")",10);
- if (x[a]>=195) {
- document.getElementById(pic[a]).width=195;
- document.getElementById(pic[a]).height=195;
- clearTimeout(t[a]);
- }
- }
- function toback(a) {
- x[a]-=5;
- y[a]-=5;
- sh[a]+=2;
- document.getElementById(pic[a]).width=x[a];
- document.getElementById(pic[a]).height=y[a];
- document.getElementById(pic[a]).style.filter='progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength='
- +sh[a]+')';
- t[a] = setTimeout("toback("+a+")",10);
- if (x[a]< =120) {
- document.getElementById(pic[a]).width=120;
- document.getElementById(pic[a]).height=120;
- clearTimeout(t[a]);
- }
- }
- < /script>
- < body leftMargin=100 topMargin=80>
- < center>
- < table cellpadding=0 cellspacing=0>
- < tr valign=center>
- < td width=215 height=215 align=center>
- < img src=lemur.jpg width=120 height=120 class=image onmouseover='tonext(0)' onmouseout='toback(0)' name=pic0>
- < /td>
- < td width=215 height=215 align=center>
- < img src=flamingo.jpg width=120 height=120 class=image onmouseover='tonext(1)' onmouseout='toback(1)' name=pic1>
- < /td>
- < tr valign=center>
- < td width=215 height=215 align=center>
- < img src=dog.jpg width=120 height=120 class=image onmouseover='tonext(2)' onmouseout='toback(2)' name=pic2>
- < /td>
- < td width=215 height=215 align=center>
- < img src=leo.jpg width=120 height=120 class=image onmouseover='tonext(3)' onmouseout='toback(3)' name=pic3>
- < /td>
- < /tr>
- < /table>
- < /center>
На странице были размещены четыре картинки, оригинальный размер которых составляет 195x195, но которые отображаются как 120x120. При этом, картинки по умолчанию имеют теневой фильтр:
FILTER:progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength=30)
Параметр color позволяет задать цвет тени, direction - угол падения, strength - разброс тени.
При наведении указателя мыши на любую из картинок вызывается функция tonext(), а если картинка теряет указатель - toback().
Функции tonext() и toback() выполняют противоположные действия. Функция tonext() увеличивает отображаемый размер картинки и уменьшает тень:
- x[a]+=5;
- y[a]+=5;
- sh[a]-=2;
функция toback() наоборот, уменьшает изображение и увеличивает тень к прежнему состоянию:
- x[a]-=5;
- y[a]-=5;
- sh[a]+=2;
Обратите внимание, что в массиве pic должны хранится все имена картинок (pic1, pic2...) по порядку. Количество элементов в массивах x, y, sh должно быть не меньше, чем количество картинок, учавствующих в эффекте.
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.