| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > координаты элемента относительно body |
| Автор: Ferromarron 30.6.2008, 18:41 | ||||
Есть, к примеру, такой код страницы
Как получить координаты элемента #block относительно body. Пробовал с помощью такого скрипта
IE считает относительно края страницы. Firefox от body. Opera в разных версиях по разному реагирует. |
| Автор: SelenIT 30.6.2008, 19:30 | ||
Явно проверять, что проверка дошла до body?
А вообще для чего такое понадобилось? Если для сопоставления с координатами мышки, то разве с ними не та же петрушка? |
| Автор: Ferromarron 4.7.2008, 20:02 |
| В опере не работает. скрипты разные (вроде тултипов, менюшек и т.п.) ищут координаты, а потом по ним позиционируют или сравнивают с шириной окна. А если body имеет стиль relative, то происходит смещение на его отступ. Может есть какое-нибудь универсальное решение для определения этих отступов? В IE понятно.... а как в Operа и Mozillа. |
| Автор: Ghirik 5.7.2008, 03:04 | ||
Я бы может корректнее ответил, но пока вот. Посмотрите эту функцию:
Она возвращает кроссбраузерный вариант клиентской области и значение прокрутни документа. Ну, думаю по алерту понято, как возвращаются эти значения. P.S. Я умышленно выложил всю страницу, потому, как тип документа имеет большое значение. Но я не проверял. Добавлено через 12 минут и 29 секунд Ferromarron, ага, сейчас прочитал о чем Вы спросили. Так то, вроде правильно ответил... Эта функция возвращает реальные значения клиентской области и значение скролла, которое при желании можно плюсануть. У меня были заморочки при соченении этого кода именно с Оперой, но в они здесь решены. margin:5px; padding:20px; маринг поди поди боди, эти анекдоты нельзя свести к нулю? Дышать станет легче... |
| Автор: Ghirik 5.7.2008, 06:39 | ||
Если Вы хотите использовать document.documentElement то без определения типа документа вам не обойтись. Это проверено. Я Вам положил кроссбраузерный вариант взятия размеров, а тот, на который Вы показали не будет правильно работать в Опере. Сейчас подумаю на счет body.... |
| Автор: Ghirik 5.7.2008, 06:57 |
| Вообще, при создании документа, обычно, выстраивают стратегический план, т.е., как бы некий подход которым в дальнейшем пользуются. Если Вы массированно используете CSS координирование объектов, то только бог вам поможет Она позволит вам взять действующие значения координат body и div-а, ну а потом просто вычесть для получения относительных значений. Добавлено через 7 минут и 7 секунд Если что-то не получится - пишите... только покажите как Вы делали. |
| Автор: Ferromarron 5.7.2008, 07:33 |
а какой стиль я должен искать? Я пробовал margin-ы - он мне и выдает как в стиле написано - 'auto' походу лучший вариант будет не использовать ширину у body. хотя для конкретного случая с равными отступами я уже придумал вариант: (ширину окна - ширина боди)/2 - это будет отступ слева и справа (при условии: ширину окна > ширина боди) не понимаю, где там проблема в опере - размеры окна считает как с доктайпом, так и без него - разницы не замечаю (в последних версиях, по крайней мере) |
| Автор: Ghirik 5.7.2008, 07:40 | ||||
Да, да... Сейчас из за этого и зашел снова на форум.. Там полностью корректная, кроссбраузерная функция.... Я с налету не догледел. Видимо умного изображал Сейчас нарисую как брать размеры... Добавлено через 5 минут и 41 секунду Да чего собственно рисовать то, если у вас получается взять auto, значит функцию Вы применяете правильно. Но просто бериете offsetTop и offsetLeft объекта. Добавлено через 13 минут и 56 секунд
Вот точно... Прочитал всю ветку... |
| Автор: Ferromarron 5.7.2008, 08:12 |
offsetTop и offsetLeft с этой функцией вообще никак не вяжутся. Они не являются текущими стилями, т.е. 'undefined' |