#javascript #css #offset
#javascript #css — файл #смещение #css
Вопрос:
Для Chrome и ff этот скрипт работает идеально, когда дело доходит до ужасного ie. есть одна проблема
function getY(oElement) {
var curtop = 0;
if (oElement.offsetParent) {
while (oElement.offsetParent)
{
curtop = oElement.offsetTop;
oElement = oElement.offsetParent;
}
}
else if (oElement.y) {
curtop = oElement.y;
}
return curtop;
}
Я попробовал некоторую отладку и обнаружил, что родительским для chrome и ff является <Li>
, что правильно, но родительским для ie является <body>
пожалуйста, помогите кому-нибудь?
Хорошо, я еще немного покопался и обнаружил, что ie не поддерживает offsetparent
с position:relative;
, но мне нужен этот css по другой причине, любой обходной путь?
Комментарии:
1. Вот как это делает jQuery: github.com/jquery/jquery/blob/master/src/offset.js#L213 (вы можете выполнить поиск в источнике jQuery для
"offsetParent:"
, чтобы найти эту часть самостоятельно)
Ответ №1:
Раньше я постоянно использовал сценарий, подобный этому, для определения положения элемента. С тех пор я перешел на использование jQuery, который имеет две потрясающие и очень совместимые с браузером функции для определения положения:
position() —http://api.jquery.com/position / — возвращает положение элемента относительно родительского.
смещение() —http://api.jquery.com/offset / — возвращает положение элемента относительно документа.
Сначала я немного неохотно использовал jQuery, потому что не хотел тратить время на его изучение и потому что я уже написал так много фрагментов кода самостоятельно, которые делали подобные вещи. Когда я попробовал jQuery, я выучил его в течение дня, и мне это нравится, и теперь я использую его для всех своих проектов JavaScript.
Возможно, это не тот ответ, который вы ищете, но в jQuery есть функции определения местоположения.