一些背景知识:我正在使用 JavaScript 垂直居中子 div,这些子 div 的高度取决于其父 div 中的条件。居中功能如下:
function autoCenter()
{var firstline = document.getElementById("ntext");
var secondline = document.getElementById("dtext");
var l1h = parseInt(getComputedStyle(firstline)["height"]);
var l2h = parseInt(getComputedStyle(secondline)["height"]);
var d1h = parseInt(getComputedStyle(document.getElementById("design"))["height"]);
var d2h = parseInt(getComputedStyle(document.getElementById("design2"))["height"]);
var totalh = l1h + l2h + d1h+ d2h;
document.getElementById("desdiv").style.top = (212-totalh)/2 + "px";
firstline.style.top = (212-totalh)/2 + d1h +"px";
secondline.style.top = (212-totalh)/2 + l1h + d1h + "px";
document.getElementById("desdiv2").style.top = (212-totalh)/2 + l1h + l2h + d1h+ "px";}
ntext、dtext、desdiv 和 desdiv2 是 div。前 2 个根据其中文本的大小进行更改,第二个 2 根据其中的图像大小进行更改(ids design & design 2)
当唯一改变的是文本 div 时,此功能可以完美运行。更改图像 div 时遇到问题。似乎涉及 getComputedStyle 的函数的第一部分直到第二次调用该函数才获得图像的新高度值。在第二次调用它之后,一切都像它应该的那样居中。但理想情况下,一切都应该在第一次通话时工作。我在这里做错了什么,如何让 div 以第一次通话为中心?
编辑:我不确定这是否相关,但 autoCenter() 总是从另一个函数中调用。