[英]How can I get IE's width without scrollbar
我使用以下行获取浏览器的宽度:
$(document).width()
然后我将元素设置为这个宽度。
但是在 IE 中,出现了水平滚动条(宽度大于浏览器大小 - 我认为这是因为它计算了垂直滚动条的宽度)。 我使用 html 4.0 转换文档类型。 我应该怎么办?
尝试clientWidth
属性,如下所示:
$('body').attr('clientWidth')
来自 Mozilla 开发者中心:
clientWidth 是元素的内部宽度(以像素为单位)。 它包括填充但不包括垂直滚动条(如果存在,如果呈现)、边框或边距。
来自 MSDN:
检索对象的宽度,包括填充,但不包括边距、边框或滚动条。
它不应该计算滚动条。 您的元素是否有margin
或border
? 这将被添加到元素的宽度并影响水平滚动。 只需尝试从$(document).width()
值中减去$(document).width()
。
您可以使用$(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();
它并不完美,但可以完成工作。 不过也有边缘情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.