Я пытаюсь сделать позиционирование в JavaScript. Я использую кумулятивную функцию позиции на основе classic quirksmode function, которая суммирует offsetTop
и offsetLeft
для каждого offsetParent
до верхнего узла.Что сделало бы offsetParent null?
Однако я столкнулся с проблемой, когда интересующий меня элемент не имеет offsetParent
в Firefox. В IE offsetParent
существует, но offsetTop
и offsetLeft
все суммируются до 0, поэтому он имеет ту же проблему, что и в Firefox.
Что привело бы к тому, что элемент, который хорошо виден и может использоваться на экране, не имеет offsetParent
? Или, более практично, как я могу найти положение этого элемента, чтобы выложить его под ним?
Edit: Вот как воспроизвести один конкретный экземпляр этого (не решен в настоящее время общепринятого ответа):
- Открыть home page of Stack Overflow.
Выполните следующий код в консоли веб-браузера (например, 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
?
Пожалуйста, отправьте пример кода. –
Пример реального мира, показывающий неисправный элемент, помог бы ... – PhiLho
В вашем случае это из-за 'position: fixed' - нет родительского макета – Bergi