Код магнитолы

Оппозиция в России ?

Россия и Украина

Мысли в слух...

Российская...власть ?

Skype

Создаём сайт

JS - телефон

Любимые сериалы

Гостевая


На главную

Кое - что о взаимодействии JS и DOM :
Всплывающая подсказка.

Не берусь судить о полезности данной опции, но вещица довольно занимательная. К тому-же в её создании задействованы встроенные (в ОС) JS-функции - обработчики событий. Не смотря на то, что не все браузеры реагируют на всплывающую подсказку - разобраться с ней будет просто интересно.
В чём идея всплывающей подсказки ? Создаётся контейнер со своим стилем, в контейнер помещается текст (или...), а сам контейнер привязывается к курсору, который перемещает мышка (Mouse). Причём, перемещение контейнера с текстом происходит в слое, расположенном над слоем странички, т.е. как-бы по-верх её. Эта особенность задаётся специальным атрибутом стиля - z-Index.
Создаём контейнер <div id="cont"></div> и помещаем его сразу после тэга <body>. Задаём контейнеру стиль (см. рис.12).
На что стоит обратить внимание : контейнер изначально невидим (03_рис.12) и расположен в левом верхнем углу странички (05 и 06_рис.12), ширину контейнера лучше сделать зависимой от размера текста (11_рис.12), значение z-Index:1 - условно, оно может быть любым положительным больше 0 (слой странички). Это при условии, что подсказка - единственный независимый слой. Это условие, контейнеру с подсказкой, обеспечивает его положение (04_рис.12).
00    <style type="text/css"> 
01    #cont 
02    { 
03        visibility:hidden;  
04        position: absolute;  
05        left:0; 
06        top:0; 
07        text-align:left; 
08        font-size:12px; 
09        border:solid 1px black; 
10        border-radius:5px; 
11        width:auto;  
12        height:16px; 
13        background-color:#ffffcc; 
14        padding:3px; 
15        z-Index:1;     // равнозначно значению +1, но может быть и минусовым 
16    } 
17    </style> 

                       рис.12


                    
00    <script language="javascript"> 
01    var hide=true; 
02    function moveOn(word) 
03       { 
04          cont.style.visibility="visible";    
05          cont.innerHTML=word;                                
06          cont.style.left=window.event.clientX+5;      
07          cont.style.top=window.event.clientY+5;   
08       }  
09    function moveOut() 
10       { 
11          cont.style.visibility="hidden"; 
12          cont.innerHTML=""; 
13          cont.style.left=0; 
14          cont.style.top=0; 
15          hide=true; 
16       } 
17    </script> 

                     рис.12.1
А теперь - JS-функции, отвечающие за поведение контейнера с текстом подсазки (см. рис.12.1). Элемент window - опущен, но - подразумевается. Обе функции мы помещаем в голову странички.
Согласно условия (04_рис.12.1) контейнер с подсказкой становится видимым при наведении курсора на элемент, к которому подключены эти функции, в нём есть текст (05_рис.12.1) и он находится на 5 пикселей правее и ниже курсора (06 и 07_рис.12.1). После того, как курсор уводится от элемента, контейнер с подсказкой становится невидимым (11_рис12.1) Если подумать, то можно вспомнить, что элементом в объектной модели (DOM) считается всё, находящееся в угловых скобках <...>.
Приведём пример подключения функций :
<a href="адрес ссылки" onMouseOver="moveOn('текст подсказки')" onMouseOut="moveOut()">текст ссылки</a>
Подключение функций происходит при помощи обработчиков событий (встроенные JS-функции) : onMouseOver(); - при наведении на элемент и onMouseOut(); - при уходе с элемента. Те, кто знаком с основами JavaScript, могут сказать - зачем нужны добавочные функции, если эти обработчики событий сами могут обеспечить появление всплывающей подсказки ? Попробовав и тот, и другой варианты - вы сами сможете ответить на этот вопрос.
Приведённые выше фунции - это определённый уровень использования JS. У него есть свои недостатки - если страничка не укладывается (по высоте) в размеры монитора (скроллинг), на нижних этажах подсказка может отрыватся от курсора (MS IE8.0). Эта проблемма то-же решаема, но это - следующий уровень.
Дерзайте !

...назад