Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Window object & DHTML

1.8K
27 июня 2004 года
tapin13
138 / / 17.06.2004
Пробую запостить ТУТ, в веб прогр. никто не ответил...

Есть сайт мой http://GSClub.tk
Сделал подсказку к менюшке на CSS + DHTML.
Почти все работает, но!..
Если чуть провернут страничку, и подвести курсор, подсказка
будет выше или посередине курсора, а не как раньше ниже.
Как с этим боротся?

Window object scrollBy(), scrollTo() тока скролят, а как узнать сколько проскролили?

Или другой способ Спасибо!
3.2K
27 июня 2004 года
triptyl
30 / / 16.06.2003
Цитата:

Как с этим бороться?



Поступить здесь придется хитро.

В Вашем коде для определения местоположения меню используется следующая запись:

(element).style.top = event.clientY;

event.clientY возвращает высоту, считая от верхнего левого угла области просмотра браузера. Из-за этого и происходят проблемы со смещением — неправильная абсолютная координата выпадающего меню в документе.

Если же обратиться к свойству event.offsetY, то оно вернет нам смещение указателя мыши относительно родительского элемента (т.е. относительно пункта меню). Зная это смещение, можно высчитать и абсолютную высоту выпадающего меню: надо к абсолютной высоте пункта меню прибавить смещение курсора мыши (event.offsetY) и некоторую константу (в вашем случае 10). Так же и с координатой Х (свойство event.offsetX)

1.8K
27 июня 2004 года
tapin13
138 / / 17.06.2004
Цитата:
Originally posted by triptyl

Поступить здесь придется хитро.



К сожалению хитрость не срабатывает. Если написать document.getElementById(elmnt).style.top= event.clientY +10 +event.offsetY;

то получться, что если страничку НЕ опускали,
при ведении курсором внутри отдельной кнопки, таблица едет вниз и обгоняет 10см.

В любом случае спасибо за ответ, но если будет решение то жду.

Если бы был параметр сколько проскроллили, то я прибавил бы его и ВСЕ... А так.. :(

3.2K
27 июня 2004 года
triptyl
30 / / 16.06.2003
Цитата:
Originally posted by tapin13

document.getElementById(elmnt).style.top= event.clientY +10 +event.offsetY;



Попробуйте:

document.getElementById(elmnt).style.top = координата Y элемента меню, к которму подвели курсор мыши + event.offsetY + 10;

3.2K
27 июня 2004 года
triptyl
30 / / 16.06.2003
Вообще, классическое выпадающее меню не должно менять свою координату в зависимости от курсора мыши. Оно просто должно появляться, если курсор наведен на верхнюю строчку меню и исчезать как только курсор мыши уходит за пределы области, содержащей меню. в таком случае лучше бы сделать так:

Код:
<table>
<tr><td &#111;&#110;mouseout="hide()">

Menu
<div id="submenu">


Item1</p>


Item2</p>
</div>

</td></tr>
</table>


Фунцкии hide() и show() прячут или показывают собственно меню.

Если делать как предлагали Вы — смотрите мое сообщение ранее. На тестовом примере работает в Opera 7.51 и Internet Explorer 6
1.8K
29 июня 2004 года
tapin13
138 / / 17.06.2004
Цитата:
Originally posted by tapin13


К сожалению хитрость не срабатывает. Если написать document.getElementById(elmnt).style.top= event.clientY +10 +event.offsetY;



Все отлично! Огромное спасибо!
Кстати давай на ТЫ.

document.getElementById(elmnt).style.top= 122 + 30*elmnt + event.offsetY;

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог