我有一个使用一些元素偏移的脚本。我打算使用以下命令触发此脚本:
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();
});
任何sugestions?或解释为什么会发生这种情况。我正在测试的浏览器是Chrome。
编辑:
偏移是dom结构:
<div id="wrap">
<div>
<p>...</p>
<p>...</p>
<p>...</p>
</div>
<div>
<p>...</p>
</div>
...
</div>
我通过(for)lopping&#34; #wrap div&#34;的节点列表来访问偏移量。 如果我关闭行高和字体大小,我将获得在完全呈现布局之前计算的偏移量。
在使用offsetHeight之前调整每个p和div的行高,字体大小和显示没有任何影响。
答案 0 :(得分:1)
您应该在页面呈现上使用load
而不是ready
或,因为您不知道CSS和图片何时完成加载。
如果您的偏移量在load
中不正确,那么还会有其他事情发生。