![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Ferromarron |
|
||||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 4.3.2007 Репутация: нет Всего: нет |
Есть, к примеру, такой код страницы
Как получить координаты элемента #block относительно body. Пробовал с помощью такого скрипта
IE считает относительно края страницы. Firefox от body. Opera в разных версиях по разному реагирует. |
||||
|
|||||
SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 7 Всего: 401 |
Явно проверять, что проверка дошла до body?
А вообще для чего такое понадобилось? Если для сопоставления с координатами мышки, то разве с ними не та же петрушка? -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
Ferromarron |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 4.3.2007 Репутация: нет Всего: нет |
В опере не работает.
скрипты разные (вроде тултипов, менюшек и т.п.) ищут координаты, а потом по ним позиционируют или сравнивают с шириной окна. А если body имеет стиль relative, то происходит смещение на его отступ. Может есть какое-нибудь универсальное решение для определения этих отступов? В IE понятно.... а как в Operа и Mozillа. |
|||
|
||||
Ghirik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 5 Всего: 20 |
Я бы может корректнее ответил, но пока вот. Посмотрите эту функцию:
Она возвращает кроссбраузерный вариант клиентской области и значение прокрутни документа. Ну, думаю по алерту понято, как возвращаются эти значения. P.S. Я умышленно выложил всю страницу, потому, как тип документа имеет большое значение. Но я не проверял. ![]() Добавлено через 12 минут и 29 секунд Ferromarron, ага, сейчас прочитал о чем Вы спросили. ![]() Так то, вроде правильно ответил... Эта функция возвращает реальные значения клиентской области и значение скролла, которое при желании можно плюсануть. У меня были заморочки при соченении этого кода именно с Оперой, но в они здесь решены. margin:5px; padding:20px; маринг поди поди боди, эти анекдоты нельзя свести к нулю? Дышать станет легче... Это сообщение отредактировал(а) Ghirik - 5.7.2008, 03:07 -------------------- Отдадим всё клиенту, пускай его машина мучается... |
|||
|
||||
Ferromarron |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 4.3.2007 Репутация: нет Всего: нет |
Ghirik, для клиентской части окна я это скрипт использую - http://webew.ru/articles/152.webew - там не суть важно наличие доктайп.
в этом то и суть вопроса, когда body не на всю ширину окна растянут , без него я бы и темы не заводил. |
|||
|
||||
Ghirik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 5 Всего: 20 |
Если Вы хотите использовать document.documentElement то без определения типа документа вам не обойтись. Это проверено. Я Вам положил кроссбраузерный вариант взятия размеров, а тот, на который Вы показали не будет правильно работать в Опере. Сейчас подумаю на счет body.... -------------------- Отдадим всё клиенту, пускай его машина мучается... |
|||
|
||||
Ghirik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 5 Всего: 20 |
Вообще, при создании документа, обычно, выстраивают стратегический план, т.е., как бы некий подход которым в дальнейшем пользуются. Если Вы массированно используете CSS координирование объектов, то только бог вам поможет
![]() Она позволит вам взять действующие значения координат body и div-а, ну а потом просто вычесть для получения относительных значений. Добавлено через 7 минут и 7 секунд Если что-то не получится - пишите... только покажите как Вы делали. -------------------- Отдадим всё клиенту, пускай его машина мучается... |
|||
|
||||
Ferromarron |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 4.3.2007 Репутация: нет Всего: нет |
а какой стиль я должен искать? Я пробовал margin-ы - он мне и выдает как в стиле написано - 'auto' ![]() походу лучший вариант будет не использовать ширину у body. хотя для конкретного случая с равными отступами я уже придумал вариант: (ширину окна - ширина боди)/2 - это будет отступ слева и справа (при условии: ширину окна > ширина боди) не понимаю, где там проблема в опере - размеры окна считает как с доктайпом, так и без него - разницы не замечаю (в последних версиях, по крайней мере) |
|||
|
||||
Ghirik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 5 Всего: 20 |
Да, да... Сейчас из за этого и зашел снова на форум.. Там полностью корректная, кроссбраузерная функция.... Я с налету не догледел. Видимо умного изображал ![]() Сейчас нарисую как брать размеры... Добавлено через 5 минут и 41 секунду Да чего собственно рисовать то, если у вас получается взять auto, значит функцию Вы применяете правильно. Но просто бериете offsetTop и offsetLeft объекта. Добавлено через 13 минут и 56 секунд
Вот точно... Прочитал всю ветку... ![]() ![]() -------------------- Отдадим всё клиенту, пускай его машина мучается... |
||||
|
|||||
Ferromarron |
|
|||
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 4.3.2007 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |