Я пытаюсь сделать позиционирование в JavaScript. Я использую кумулятивную функцию позиции, основанную на классическую функцию quirksmode, которая суммирует offsetTop
и offsetLeft
для каждого offsetParent
до вершины node.
Однако я столкнулся с проблемой, когда интересующий меня элемент не имеет offsetParent
в Firefox. В IE offsetParent
существует, но 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
?