Наверное вы встречали (хотя бы
на этом сайте) картинки, которые изменяются,
когда над ними оказывается курсор мыши. Делается
это достаточно просто с помощью JavaScript, но чтобы
все работало правильно, важны некоторые детали, о
которых часто забывают.
Итак, немного теории: когда
курсор мыши грозно нависает над картинкой, она
издает крик о помощи - генерирует событие onMouseOver -
"мышь надо мной", а когда мышь наконец
уходит, издает сигнал спасения - событие onMouseOut. На
самом деле ситуация сложнее - просто картинка
лишена возможности издавать крики о помощи и
только картинка, являющаяся одновременно
ссылкой (т.е заключенная в тэги </a> </a>),
может это делать.
В первую очередь необходимо
организовать вызов команды спасения - создать
инструкции, о том, что делать в случае получения
сигнала о помощи:
Что это значит? Мы создали ссылку, которая при
событии onMouseOver быдет вызывать функцию JavaScript img_act,
а при событии onMouseOut - img_inact. Внутри ссылки
располагается наша картинка, обратите внимание
на параметр name в тэге img - name="img1" - он дает
картинке уникальное имя, которое передается
"спасательным" функциям img_act и img_inact, чтобы
они знали, над какой именно картинкой нависла
грозная опасность.
На самом деле вся работа еще
впереди - надо сделать функции-спасатели. Прежде
всего надо зарезервировать 2 картинки, которые
будут соответствовать включенному и
выключенному состояниям. Обратите внимание, что
называются они img1on и img1off т.е. как наша картинка
img1, с прибавкой on и off (это не имеет никакого
отношения к именам файлов):
img1on = new Image ; img1off = new
Image ;
Теперь надо указать, какие
именно это картинки, т.е. прописать реальные
имена файлов для включенного и выключенного
состояний:
Эти функции получают имя
картинки и сохраняют его в переменной imgName. Мы
вызывали функции img_act(img1), значит в нашем случае
imgName=img1. Дальше к этому имени привешивается
"on" или "off" - помните как мы обозначили
имена для включенного и выключенного состояний -
img1on и img1off. Наконец производится замена картинки c
именем imgName (т.е. img1) на включенную (функция img_act) -
img1on или выключенную (функция img_inact) - img1off.
Вот вроде и все - но есть еще
маленькая заминка - Internet Explorer 3 кое-что не
понимает и разразится кучей ошибок при
обнаружении такого кода - необходимо определить
броузер и исключить выполнение кода, если это IE3.
Тут возможно несколько вариантов - как всегда
решение в лоб не самое короткое и красивое (код
взят у Евгения Савельева на www.js.ru):
if (browser_name == "Netscape" && browser_version >= 3.0) { roll =
'true'; }
else if (browser_name == "Microsoft Internet Explorer" &&
browser_version >= 3.0) { roll = 'true'; }
else { roll = 'false'; }
Тут анализируется броузер и если это IE3, то
переменная roll получает значение false и тогда
дальше надо выполнять проверку roll и запрещать
выполнение, если roll не равно true. Более элегантное
и короткое решение:
if (document.images)
это выражение равно false в
случае IE3 - единственная строка выполняет те же
функции, что и весь предыдущий код проверки
броузера.
Итак привожу весь код (для
примера пусть у нас будет 2 картинки): Эта часть
вставляется в head вашего документа. Не забудьте,
что содержимое между тэгами script должно быть
вложено в комментарии для совместимости со
старыми броузерами и некоторыми поисковыми
системами:
<SCRIPT language="Javascript">
<!--
if (document.images)
{
img1on = new Image ; img1off = new Image ;
img2on = new Image ; img2off = new Image;
Если вы во всем разобрались, вам
должно быть понятно, что можно создать другие
функции, вызываемые событиями onMouseOver и onMouseOut,
которые будут выполнять любые действия -
например изменять вид другой картинки в другом
месте или даже нескольких картинок и т.д.
Применение ограничено только вашей фантазией,
экспериментируйте.
Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!