我有以下代码将其余宽度重新分配给所有 div:
var menuItems = $('.picNav .overlay .item, .picNav .overlay .home');
var parentWidth = 980;
var totalItemWidth = 0;
var restWidth;
var moduloWidth;
var resultWidth;
menuItems.css({ width: "" });
for (var i = 0; i < menuItems.length; i++)
{
totalItemWidth += menuItems[i].offsetWidth;
}
restWidth = parentWidth - totalItemWidth;
moduloWidth = restWidth % menuItems.length;
restWidth -= moduloWidth;
resultWidth = restWidth / menuItems.length;
for (i = 0; i < menuItems.length; i++)
{
$(menuItems[i]).width($(menuItems[i]).width() + resultWidth);
}
$(menuItems[0]).width($(menuItems[0]).width() + moduloWidth);
此代码段在所有当前浏览器中都按预期工作。不过,在使用 IE9 进行一些测试后,我遇到了有时最后一个元素被放到下一行的问题。当我调试 javascript 时,它会计算 totalItemWidth 的正确数量(在我的情况下:717px),如果我不调试(或跳过它计算 totalItemWidth 的部分),它有时会出现 658px。
我不确定这是否是加载问题,或者是否还有其他事情发生。
如果有人能给我一点见解,我会很高兴。
干杯卡罗