Javascript 在INternet Explorer中,菜单运行到两行

Javascript 在INternet Explorer中,菜单运行到两行,javascript,jquery,Javascript,Jquery,我有一个菜单omn,它使用下面的javascript计算菜单项的填充 这在FIrefox中运行良好,但在IE中,菜单项变得太长,最后一个菜单项溢出到新行。有人能帮忙吗 var finalWidth = 940; var totWidth = 0; var lis = $("header ul.lv1 > li").each(function () { totWidth += $(this).width(); }); var diff = finalWidth - totWidt

我有一个菜单omn,它使用下面的javascript计算菜单项的填充

这在FIrefox中运行良好,但在IE中,菜单项变得太长,最后一个菜单项溢出到新行。有人能帮忙吗

var finalWidth = 940;
var totWidth = 0;

var lis = $("header ul.lv1 > li").each(function () {
    totWidth += $(this).width();
});

var diff = finalWidth - totWidth;
var diffPer = diff / lis.length;

if (diff > 0) {
    $("header ul.lv1 > li a").each(function () {
        $(this).css('padding-right', diffPer / 2);
        $(this).css('padding-left', diffPer / 2);
    });

    var totWidth2 = 0;
    var lis2 = $("header ul.lv1 > li").each(function () {
        totWidth2 += $(this).width();
    });



    if ($.browser.msie) {
        var version = parseInt($.browser.version, 10);

        if (version < 9) {
            $("header ul.lv1 > li a").last().css('padding-right', (940 - totWidth2) - 20);
            var lastItemPaddding = (Math.floor(diffPer / 2) + (940 - totWidth2));
            $("header ul.lv1:last-child li:last-child a").css('padding-right', lastItemPaddding);
        }
    }
    else {
        var version = parseInt(detectBrowserVersion(), 10);

        if (version == 14) {

            $("header ul.lv1 > li a").last().css('padding-right', (940 - totWidth2) - 20);
            var lastItemPaddding = (Math.floor(diffPer / 2) + (940 - totWidth2));
            $("header ul.lv1:last-child li:last-child a").css('padding-right', lastItemPaddding);
        }
    }
}

尝试使浮动元素比包含它们的容器小1个像素,即有时会出现问题并将其拆分为新行


因此,给出var finalWidth=939;尝试一下,这应该可以解决问题。

尝试使浮动元素比包含它们的容器小1个像素,即有时会出现问题,并将其拆分为新行


因此,给出var finalWidth=939;尝试一下,这会解决问题。

更改finalWidth不会做太多工作,您必须将代码中的940也更改为finalWidth

试试这个:

      var diffPer = (diff / lis.length) - 1; //(or -2)

更改finalWidth不会做很多工作,您必须将代码中的940也更改为finalWidth

试试这个:

      var diffPer = (diff / lis.length) - 1; //(or -2)

我刚刚比较了Firefox10、Safari最新版本和IE7。菜单只有在狩猎时才好看。在Firefox中,最后一个菜单项位于下一行,在第一个菜单项下面。在IE7中,所有项目都在一行上,但z索引有问题。如果我将以下CSS添加到header元素,则重叠是固定的:

header {
    position: relative;
    z-index: 1;
}
我知道这不是你的第一个问题,但是IE7上有很多用户,所以我会考虑这个问题。 关于你的填充问题。我看到一些填充物是双值的。将其更改为整数或设置值应有助于:

var diffPer = parseInt(diff / lis.length, 10);


对所有部门都这样做。

我刚刚比较了Firefox10、Safari最新版本和IE7。菜单只有在狩猎时才好看。在Firefox中,最后一个菜单项位于下一行,在第一个菜单项下面。在IE7中,所有项目都在一行上,但z索引有问题。如果我将以下CSS添加到header元素,则重叠是固定的:

header {
    position: relative;
    z-index: 1;
}
我知道这不是你的第一个问题,但是IE7上有很多用户,所以我会考虑这个问题。 关于你的填充问题。我看到一些填充物是双值的。将其更改为整数或设置值应有助于:

var diffPer = parseInt(diff / lis.length, 10);


对所有部门执行此操作。

哪一版本的Internet Explorer?还要检查IE8网页错误详细信息用户代理:Mozilla/4.0兼容;msie8.0;WindowsNT6.1;WOW64;三叉戟/4.0;EasyBits GO v1.0;GameXN-GO v1.0;SLCC2。NET CLR 2.0.50727。NET CLR 3.5.30729。NET CLR 3.0.30729;媒体中心PC 6.0;InfoPath.3时间戳:Sat,2012年3月3日14:35:41 UTC消息:对象不支持此属性或方法行:501字符:13代码:0 URI:哪个版本的Internet Explorer?还要检查IE8网页错误详细信息中的站点是否已断开用户代理:Mozilla/4.0兼容;msie8.0;WindowsNT6.1;WOW64;三叉戟/4.0;EasyBits GO v1.0;GameXN-GO v1.0;SLCC2。NET CLR 2.0.50727。NET CLR 3.5.30729。NET CLR 3.0.30729;媒体中心PC 6.0;InfoPath.3时间戳:Sat,2012年3月3日14:35:41 UTC消息:对象不支持此属性或方法行:501字符:13代码:0 URI: