Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Radar от 21 Января 2003, 23:06:31
-
Всем привет!!!
У меня такой вот вопрос возник в связи с написанием выплывающего меню: а можно ли с помощью ЯС определить местоположение ячейки таблицы, вызвавшей событие? Т.е. ее какой-нибудь угол? Экранное местоположение знать бы не плохо.
Извиняююсь, если что-то напутал.
-
определить местоположение ячейки таблицы, вызвавшей событие?
какое событие?
Задачу не очень я понял, но ИМХО каком месте экрана расположена ячейка
определить нельзя.
-
Экранное положение можно назначать при помощи слоев.
Для этого нужно обозначить необходимые элементы как слой и при помощи свойств определить его положение на экране.
-
по ячейке таблицы щелкают мышей, вот бы определить где эта ячейка находится, чтобы знать от чего плясать при определении координат выпадающего меню.
А проблема вот в чем. Написал (вернее содрал) меню. Оно работает. Но при вставке его в тело страницы в таблу, выпадающее меню появляется не там, где хотелось бы.
Вопрос, наверное, следующий: как это выпадающее меню работает у других в теле страницы? Как оно определяет, что выпадать-то надо относительно этого тега?
-
почитай где-нибудь про объект Event. Такие задачи с его помощью решаются.
например event.x event.y - текущие координаты мыши. По ним и определяеш где менюшку отобразить
-
Интересно, а у тега STYLE свойство position имеет какое-то еще значение кроме absolute?
Жук, а лаеры работают в IE?
-
Интересно, а у тега STYLE свойство position имеет какое-то еще значение кроме absolute?
Жук, а лаеры работают в IE?
Имеет. relative, если не ошибаюсь.
Слои работают и в IE и в NN, но используют разные теги. В IE используется , а в NN
. Есть еще небольшие отличия.
Обычно определяют скриптом браузер и в зависимости от результата выдают тот или иной код.
-
Про слои нашел кое-что...
-
Обычно определяют скриптом браузер и в зависимости от результата выдают тот или иной код.
а еще есть кроссброузерные библиотеки для работы со слоями, типа klayers. Кстати для NN тоже можно div использовать (только там какие-то параметры недоступны, если я ничего не путаю)
-
Т.е. теперь получается, что я буду вычислять позиции, в которые следует помещать выплывающее меню относительно слоя?
Т.е. в тег лаер я помещаю изображение, при наведении на которое мышкой, появляется всплывающее меню. Это всплывающее меню будет позиционироваться относительно лаера изображения или опять относительно всей страницы? Не приду ли я опять к тому же от чего хочу уйти?
-
нет, меню в слой положи (оно у тебя и так в слое скорее всего) а через Event определяй где его (слой) показывать. ИМХО так (если я все правильно понял)
-
Да, насчет билиотек, это круто... Но мне до них пока далековато.
Если position это абсолютное позиционирование элемента, то relative что дает?
-
а можно показать слой относительно таблицы (ячейки), а не относительно страницы (экрана), потому что фиг его знает, где он (слой этот) может появиться на экране в составе всей страницы?
-
Да, насчет билиотек, это круто... Но мне до них пока далековато.
Если position это абсолютное позиционирование элемента, то relative что дает?
relative - относительное. То есть, если разрешение экрана разное, то absolute может при другом разрешении не там показываться. Если же relative, то координаты считаются в относительных единицах и по идее должны одинаково выглядеть при разных разрешениях.
-
Юзер кликает по экрану. Ты отслеживаеш это событие и определяеш координаты мыши. Далее в эти координаты перемещаеш слой с меню и показываеш.
Типа
menu_layr.style.left = Event.x;
menu_layer.style.top = Event.y;
(это не рабочий код, просто написал чтобы идею показать)
Это я просто объяснил, на самом деле еще нужно проверить, не будет ли меню выходить за рамки окна
-
наверное с координатами еще нужно что-то сделать, а что допереть не могу, иначе ведь если просто размещать относительно этих координат, то ведь выплывающее меню скакать будет?
-
или, блин, эти event.x и event.y определяют координаты слоя, вызвавшего событие!!!?
-
Приведи сюда код. Понятней будет для разбора.
-
Жук
relative - координаты рассчитываются относительно родиетльского слоя (на случай вложенных слоев) AFAIK
Radar
в смысле плавно перемещать? или что делать?
-
или, блин, эти event.x и event.y определяют координаты слоя, вызвавшего событие!!!?
координаты курсора мыши?
-
а лаеры в теги ТАБЛЕ определять моно?
-
а лаеры в теги ТАБЛЕ определять моно?
да. А зачем ?
-
нет, они должны просто появляться при наведении мышкой на изображение-это просто картинка-прямоугольник. Когда я разместил эти главные меню из которых должны выпадать другие на странице сайта в строке-ячейке таблицы (а как иначе?), эти вываливающиеся меню мои "потеряли ориентацию". У меня было абсолютное позицинонирование и координаты меню высчитывалсь относительно коодинат главных менюшек. При помещении в таблицу, естественно координаты главных менюшек изменились, я не могу их определить. Это позиционирование главных менюшек:
STYLE="position:absolute;
left: 10;
top: 10"
onmouseover="return showMenu(WoodMenuDiv)"
onmouseout="return hideMenu(WoodMenuDiv)">
это функция показа меню:
function showMenu(menuToShow)
{
var srcElement=event.srcElement;
var xPos=parseInt(srcElement.offsetLeft);
var yPos=parseInt(srcElement.offsetTop);
menuToShow.style.left=xPos+10;
menuToShow.style.top=yPos+20;
Надо писать, используя слои?
-
А чтобы вычислить координаты ячейки таблицы.
Вот какая у меня "грандиозная идея"!
-
Извиняюсь за вчерашнее исчезновение со страницы форума.
Значит, лаеры.