Мы все знаем, что IE6 сложно. Но, похоже, различие в позиционировании в более поздних версиях IE, по сравнению с Firefox или другими браузерами. У меня есть простая пара функций javascript, которая находит положение элемента, а затем отображает другой элемент по отношению к первому элементу. Идея состоит в том, чтобы второй элемент, который несколько больше, появился перед первым элементом, когда мышь нависает над ним. Он отлично работает, за исключением всех версий Internet Explorer, позиция второго элемента выглядит иначе, чем в Firefox.Получение позиции элемента в IE по сравнению с другими браузерами
код, чтобы получить позицию элемента является:
function getPosition(e)
{
var left = 0;
var top = 0;
while (e.offsetParent) {
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
И фактическое отображение кода опрокидывание:
var pos = getPosition(elem1);
elem2.style.top = pos.y - 8;
elem2.style.left = pos.x - 6;
В Firefox elem2
появляется непосредственно над elem1
, как я хочу к. Но в IE7 или IE8 он выглядит совсем не так. В чем причина этого, и есть ли способ его исправить?
Я дам вам пользу от сомнений и предположим, что у вас есть веская причина для написания такого кода самостоятельно, но, безусловно, быстрый способ получить некоторые рекомендации - это прочитать соответствующий код в jQuery или другой такой поскольку это именно то поведение, которое они предназначены для нормализации. – Pointy
Я второй, что говорит Уокей. При всем уважении к тому, чтобы катиться самостоятельно, фреймворки разработаны таким образом, чтобы упростить такие вещи. –
Пожалуйста, не препятствуйте людям учиться. Кроме того, большие библиотеки не являются непогрешимыми. –