我有一个使用一些元素偏移的脚本。我打算使用以下命令触发此脚本:
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 没有影响。