代码之家  ›  专栏  ›  技术社区  ›  Billy

没有滚动条怎么能得到IE的宽度

  •  2
  • Billy  · 技术社区  · 16 年前

    我使用以下行获取浏览器的宽度:

    $(document).width()
    

    然后我将元素设置为这个宽度。

    但在IE中,会出现水平滚动条(宽度大于浏览器大小-我认为这是因为它计算垂直滚动条的宽度)。我使用HTML4.0转换doctype。我该怎么办?

    3 回复  |  直到 16 年前
        1
  •  4
  •   No Surprises    16 年前

    试试 clientWidth 财产,就像这样:

    $('body').attr('clientWidth')
    

    从Mozilla开发者中心:

    ClientWidth是元素的内部宽度(像素)。它包括填充,但不包括垂直滚动条(如果存在,如果呈现)、边框或边距。

    来自msdn:

    检索对象的宽度,包括填充,但不包括边距、边框或滚动条。

        2
  •  1
  •   G-Wiz RameshVel    16 年前

    它不应该算作斯科尔巴。元素是否有边距或边框?这将添加到元素的宽度并影响水平滚动。只需尝试从$(document.width()值中减去。

        3
  •  0
  •   jpsimons    16 年前

    你可以使用 $(window).width() 不包括滚动条。但是,这是窗口宽度,而不是文档宽度。在水平滚动条的情况下,文档可以比窗口宽很多。如果页面的宽度永远无法满足水平滚动条的需要,那么这对您来说可能很好。

    在IE(quirksmode)中获取无滚动条的文档宽度,不管水平滚动条的存在,我都不知道完美的解决方案。这是我当前使用的:

    var maxLikelyScrollbarWidth = 25; // It's 20px on my IE
    var hscroll = $(document).width() > $(window).width() + maxLikelyScrollbarWidth;
    var widthNoScrollbar = hscroll ? $(document).width() : $(window).width();
    

    这不是完美的,但能完成任务。不过,也有一些边缘案例。