0

我有一个使用一些元素偏移的脚本。我打算使用以下命令触发此脚本:

window.addEventListener('load', function() {
    ...
}

当我使用这个方法时,所有的 DOM 元素都被定义了,但是偏移值是错误的。我可以通过关闭一些 css 值来获得提供的偏移量。我应用了一个快速/可怕的修复:

window.addEventListener('load', function() {
    function my_func(){
        ...
    }
    window.setTimeout(my_func, 1000);
});

这会呈现正确的偏移量,但我感觉就像它的胶带。

我最后一次尝试是强制 webkit 渲染,但这也有错误的偏移量:

 window.addEventListener('load', function() {
    function my_func(){
        ...
    }
    document.getElementById('wrap').style.display = 'none';
    document.getElementById('wrap').style.display = 'block';
    my_func();
});

有什么建议吗?或解释为什么会发生这种情况。我正在测试的浏览器是 Chrome。

编辑 :

偏移量是 dom 结构:

<div id="wrap">
    <div>
        <p>...</p>
        <p>...</p>
        <p>...</p>
    </div>
    <div>
        <p>...</p>
    </div>
   ...
</div>

我通过(for)遍历“#wrap div”的节点列表来访问偏移量。如果我关闭 line-height 和 font-size 我将获得在布局完全呈现之前计算的偏移量。

在使用 offsetHeight 之前调整每个 p 和 div 的 line-height、font-size 和 display 没有影响。

4

1 回答 1

1

您应该使用load而不是ready在页面渲染上使用,因为您不知道 CSS 和图像何时完成加载。

如果您的偏移量不正确,load那么还有其他事情发生。

于 2013-03-08T23:58:24.353 回答