Что бы сделать offsetParent нулевым?
Я пытаюсь сделать позиционирование в JavaScript. Я использую кумулятивную функцию положения на основеклассическая функция quirksmode что суммыoffsetTop
а такжеoffsetLeft
для каждогоoffsetParent
до верхнего узла.
Однако я сталкиваюсь с проблемой, когда интересующий меня элемент не имеетoffsetParent
в Firefox. В IEoffsetParent
существует, ноoffsetTop
а такжеoffsetLeft
все суммы до 0, так что это имеет ту же проблему, что и в Firefox.
Что может привести к тому, что элемент, который четко виден и пригоден для использования на экране, не будет иметьoffsetParent
? Или, на практике, как я могу найти положение этого элемента, чтобы разместить под ним раскрывающийся список?
редактироватьВот как воспроизвести один конкретный случай этого (не решенный в настоящее время принятым ответом):
Откройдомашняя страница переполнения стека.Запустите следующий код в консоли веб-браузера (например, Chromev21):
var e = document.querySelector('div');
console.log(e);
// <div id="notify-container"></div>
do{
var s = getComputedStyle(e);
console.log(e.tagName,s.display,s.visibility,s.position,e.offsetParent);
} while(e=e.parentElement)
// DIV block visible fixed null
// BODY block visible static null
// HTML block visible static null
ПочемуoffsetParent
этого элементаnull
?