Window object & DHTML
Есть сайт мой http://GSClub.tk
Сделал подсказку к менюшке на CSS + DHTML.
Почти все работает, но!..
Если чуть провернут страничку, и подвести курсор, подсказка
будет выше или посередине курсора, а не как раньше ниже.
Как с этим боротся?
Window object scrollBy(), scrollTo() тока скролят, а как узнать сколько проскролили?
Или другой способ Спасибо!
Как с этим бороться?
Поступить здесь придется хитро.
В Вашем коде для определения местоположения меню используется следующая запись:
(element).style.top = event.clientY;
event.clientY возвращает высоту, считая от верхнего левого угла области просмотра браузера. Из-за этого и происходят проблемы со смещением — неправильная абсолютная координата выпадающего меню в документе.
Если же обратиться к свойству event.offsetY, то оно вернет нам смещение указателя мыши относительно родительского элемента (т.е. относительно пункта меню). Зная это смещение, можно высчитать и абсолютную высоту выпадающего меню: надо к абсолютной высоте пункта меню прибавить смещение курсора мыши (event.offsetY) и некоторую константу (в вашем случае 10). Так же и с координатой Х (свойство event.offsetX)
Поступить здесь придется хитро.
К сожалению хитрость не срабатывает. Если написать document.getElementById(elmnt).style.top= event.clientY +10 +event.offsetY;
то получться, что если страничку НЕ опускали,
при ведении курсором внутри отдельной кнопки, таблица едет вниз и обгоняет 10см.
В любом случае спасибо за ответ, но если будет решение то жду.
Если бы был параметр сколько проскроллили, то я прибавил бы его и ВСЕ... А так.. :(
document.getElementById(elmnt).style.top= event.clientY +10 +event.offsetY;
Попробуйте:
document.getElementById(elmnt).style.top = координата Y элемента меню, к которму подвели курсор мыши + event.offsetY + 10;
<tr><td onmouseout="hide()">
Menu
<div id="submenu">
Item1</p>
Item2</p>
</div>
</td></tr>
</table>
Фунцкии hide() и show() прячут или показывают собственно меню.
Если делать как предлагали Вы — смотрите мое сообщение ранее. На тестовом примере работает в Opera 7.51 и Internet Explorer 6
К сожалению хитрость не срабатывает. Если написать document.getElementById(elmnt).style.top= event.clientY +10 +event.offsetY;
Все отлично! Огромное спасибо!
Кстати давай на ТЫ.
document.getElementById(elmnt).style.top= 122 + 30*elmnt + event.offsetY;