У меня возникла проблема с попыткой определить положение элемента DOM относительно верхней части страницы (независимо от того, находится ли она в или из окна просмотра).
Теперь, в Firefox, это очень просто, просто выполните:
jQuery(element).offset().top
Однако в Chrome это выражение возвращает положение элемента относительно окна просмотра, которое изменяется при прокрутке вверх и вниз по странице. В этом случае я могу вместо этого вычислить значение, которое я хочу сделать:
jQuery(element).offset().top + document.body.scrollTop
Трудность, конечно, в том, что разные версии Chrome могут иметь дело с этим по-другому, не говоря уже о других браузерах, которые я даже не могу проверить! Есть ли кросс-браузерное простое решение, чтобы найти это значение? Казалось бы, достаточно просто, чтобы хотеть сделать.
редактировать
Как кто-то сказал, "это должно быть то же самое, что точка jQuery". Я тестировал его на других сайтах, и это так. Почему-то мой сайт отбрасывает его по какой-то причине. Какие-нибудь подсказки о том, что может быть причиной этого?
Найди его! Как оказалось, для этого было странное правило CSS:
html, body {
overflow-y: scroll;
}
Это создало окно прокрутки внутри окна прокрутки (но каким-то образом скрытое от представления), что означает, что, хотя я прокручивался через внутреннее окно "тело", мой видовой экран фактически не двигался. Я понял это, заметив, что window.pageYOffset
всегда возвращался 0.
<body>
способами, которые я не до конца понимаю.
.offset()
. (В этом вся суть jQuery.) Однако Chrome (WebKit в целом) не любит думать о<body>
как о части контекста прокрутки.<div>
в качестве единственного дочернего элемента для<body>
сheight: 100%
и убедитесь, что вы очистили любые дополнения<body>
т. Д., Вы можете использовать этот<div>
в качестве ссылочного элемента прокрутки.