0

我有以下代码将其余宽度重新分配给所有 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。

我不确定这是否是加载问题,或者是否还有其他事情发生。

如果有人能给我一点见解,我会很高兴。

干杯卡罗

4

1 回答 1

0

您不能""像在.css({ width: "" });. 使用width: "auto"或特定的%px代替。

于 2013-06-06T13:26:31.650 回答