0

考虑到其他元素的位置,我一直在尝试寻找好的功能来帮助我将元素放置在页面中。我没有使用 jQuery。

所以我发现很多消息来源告诉我应该导航到目标元素的 offsetParent,获取它们的 offsetTops 和 offsetLefts。它几乎可以工作,但我做了一些测试并意识到它没有考虑一些父母的填充。我使用 CSS 更改了填充,它仍然给出相同的数字。当我将元素放在页面中时,它会被卡在靠近或超过父级的边距

我正在使用这个功能(它与我在网上找到的大多数功能非常相似)

function getOffset(el){
if(isString(el)) el = document.getElementById(el);

var x = el.offsetLeft;
var y = el.offsetTop;

while(el = el.offsetParent){
    x += el.offsetLeft;
    y += el.offsetTop;
}

return { left: x, top: y };

}

朋友们知道怎么解决吗?如果我发布一些图片有帮助吗?我已经尝试过更改 css,并且我确信问题出在一个元素的填充上。

@编辑

我正在使用 Firefox 14.0.1

在原始页面中还有许多其他元素,这就是我得到的数字不同的原因。但是jsfiddle中的错误是一样的。它向左表示 1(这可能是元素“内容”的边框宽度)。它没有考虑元素“registerArea”中左填充的 15 像素,也没有考虑它的边界。

http://jsfiddle.net/rhPYH/25/

4

1 回答 1

0

好的,

我一直在使用 display: table 来使元素的大小自动调整到它的内容。出于某种原因,Javascript aws 在找到这个元素“registerArea”的正确大小时遇到​​了一些问题(它有一个显示:table rule 和 paddings)。我所做的是更改 block 的显示。它仍在正确呈现元素,现在 Javascript 正在考虑填充,这给了我元素的正确位置。

于 2012-08-29T16:41:31.533 回答