【发布时间】:2011-11-16 07:05:39
【问题描述】:
我编写了以下脚本来显示隐藏元素,然后将其位置固定到页面中心。
function popUp(id,type) {
var popUpBox = document.getElementById(id);
popUpBox.style.position = "fixed";
popUpBox.style.display = "block";
popUpBox.style.zIndex = "6";
popUpBox.style.top = "50%";
popUpBox.style.left = "50%";
var height = popUpBox.offsetHeight;
var width = popUpBox.offsetWidth;
var marginTop = (height / 2) * -1;
var marginLeft = (width / 2) * -1;
popUpBox.style.marginTop = marginTop + "px";
popUpBox.style.marginLeft = marginLeft + "px";
}
当 onclick 事件调用此函数时,offsetHeight 和 offsetWidth 计算不正确,因此无法正确居中元素。如果我第二次单击 onclick 元素,offsetHeight 和 offsetWidth 计算正确。
我尝试了各种我能想象到的改变顺序,这让我发疯了!非常感谢任何帮助!
【问题讨论】:
-
嗯,您的代码对我来说似乎可以正常工作? jsfiddle.net/mrtsherman/SdTEf/1
-
@mtrsherman,谢谢。你是 jsfiddle 向我展示了我的方式的错误。请注意:如果您没有为要确定其高度和宽度的元素定义高度和宽度,则使用 offsetHeight 和 offsetWidth 将无法获得正确的高度和宽度。
-
是的。很高兴你解决了。像这样的问题,看起来一切正常,但实际上并非如此——让我的脑袋想爆炸!
-
如果您将其发布为答案,我肯定会选中它!
标签: javascript onclick height hidden offsetwidth