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

Возможно, вы видели подобный эффект, сделанный во Flash. Но во-первых - Flash есть не у всех, во вторых - размер загружаемого Flash ролика несоизмерима по размерам с небольшим скриптом на JavaScript.

Пусть есть некоторое количество картинок (желательно квадратных для более красивого эффект выдвижения). Необходимо, что при наведении на одну из картинок она плавно увеличивалась в размерах, то есть создавалось ощущение, что она плавно выдвигается. Для придания изящности, необходимо также добавить тень небольшим картинкам, которая исчезает по мере увеличения изображения.

Следующий код позволяет продемонстрировать данный эффект:

HTML
Текст

  1. < style>

  2. .image { cursor: hand;
  3. border: 1px solid;
  4. FILTER:progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength=30)}

  5. < /style>

  6. < script language=JavaScript>

  7. var pic = new Array("pic0", "pic1", "pic2", "pic3");
  8. var x = new Array(120,120,120,120,120);
  9. var y = new Array(120,120,120,120,120);
  10. var sh = new Array(30,30,30,30,30);
  11. var t = new Array();

  12. function tonext(a) {

  13. x[a]+=5;
  14. y[a]+=5;
  15. sh[a]-=2;
  16. document.getElementById(pic[a]).width=x[a];
  17. document.getElementById(pic[a]).height=y[a];
  18. document.getElementById(pic[a]).style.filter='progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength='

  19. +sh[a]+')';
  20. t[a] = setTimeout("tonext("+a+")",10);
  21. if (x[a]>=195) {
  22. document.getElementById(pic[a]).width=195;
  23. document.getElementById(pic[a]).height=195;
  24. clearTimeout(t[a]);
  25. }
  26. }

  27. function toback(a) {

  28. x[a]-=5;
  29. y[a]-=5;
  30. sh[a]+=2;
  31. document.getElementById(pic[a]).width=x[a];
  32. document.getElementById(pic[a]).height=y[a];
  33. document.getElementById(pic[a]).style.filter='progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength='

  34. +sh[a]+')';
  35. t[a] = setTimeout("toback("+a+")",10);
  36. if (x[a]< =120) {
  37. document.getElementById(pic[a]).width=120;
  38. document.getElementById(pic[a]).height=120;
  39. clearTimeout(t[a]);
  40. }
  41. }

  42. < /script>

  43. < body leftMargin=100 topMargin=80>
  44. < center>
  45. < table cellpadding=0 cellspacing=0>
  46. < tr valign=center>

  47. < td width=215 height=215 align=center>
  48. < img src=lemur.jpg width=120 height=120 class=image onmouseover='tonext(0)' onmouseout='toback(0)' name=pic0>
  49. < /td>

  50. < td width=215 height=215 align=center>
  51. < img src=flamingo.jpg width=120 height=120 class=image onmouseover='tonext(1)' onmouseout='toback(1)' name=pic1>
  52. < /td>

  53. < tr valign=center>
  54. < td width=215 height=215 align=center>
  55. < img src=dog.jpg width=120 height=120 class=image onmouseover='tonext(2)' onmouseout='toback(2)' name=pic2>
  56. < /td>

  57. < td width=215 height=215 align=center>
  58. < img src=leo.jpg width=120 height=120 class=image onmouseover='tonext(3)' onmouseout='toback(3)' name=pic3>
  59. < /td>

  60. < /tr>
  61. < /table>
  62. < /center>

На странице были размещены четыре картинки, оригинальный размер которых составляет 195x195, но которые отображаются как 120x120. При этом, картинки по умолчанию имеют теневой фильтр:

FILTER:progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#666666,strength=30)

Параметр color позволяет задать цвет тени, direction - угол падения, strength - разброс тени.

При наведении указателя мыши на любую из картинок вызывается функция tonext(), а если картинка теряет указатель - toback().

Функции tonext() и toback() выполняют противоположные действия. Функция tonext() увеличивает отображаемый размер картинки и уменьшает тень:

HTML
Текст

  1. x[a]+=5;
  2. y[a]+=5;
  3. sh[a]-=2;

функция toback() наоборот, уменьшает изображение и увеличивает тень к прежнему состоянию:

HTML
Текст

  1. x[a]-=5;
  2. y[a]-=5;
  3. sh[a]+=2;

Обратите внимание, что в массиве pic должны хранится все имена картинок (pic1, pic2...) по порядку. Количество элементов в массивах x, y, sh должно быть не меньше, чем количество картинок, учавствующих в эффекте.



Постоянные ссылки

При копировании ссылка на TeaM RSN обязательна!

URI

Html (ЖЖ)

BB-код (Для форумов)

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.