clientHeight/clientWidth 在不同的浏览器上返回不同的值

IT技术 javascript css firefox internet-explorer-8 internet-explorer-7
2021-03-04 01:32:36

在 IE7、IE8 和 Firefox 上的属性document.body.clientHeightdocument.body.clientWidth返回不同的值:

IE 8:

document.body.clientHeight : 704 
document.body.clientWidth  : 1148

IE 7:

document.body.clientHeight : 704 
document.body.clientWidth  : 1132

火狐:

document.body.clientHeight : 620 
document.body.clientWidth  : 1152

为什么会存在这种差异?
是否有任何等效的属性在不使用 jQuery 的情况下在不同浏览器(IE8、IE7、Firefox)之间保持一致?

6个回答

关于为什么存在差异,Paul A 是正确的,但 Ngm 提供的解决方案是错误的(在 JQuery 的意义上)。

jquery (1.3) 中 clientHeight 和 clientWidth 的等价物是

$(window).width(), $(window).height()
我不认为这是真的。$(window).height()并且document.documentElement.clientHeight经常在不同的浏览器中返回完全不同的值。
2021-04-29 01:32:36
.height()不包括元素填充。如果有人然后使用.innerHeight()它仍然不行,因为当元素可滚动时它不考虑滚动条。clientHeight是内部高度,但只有可见高度(没有滚动条)。
2021-05-02 01:32:36

这与浏览器的盒子模型有关。使用 jQuery 或其他 JavaScript 抽象库之类的东西来规范 DOM 模型。

& @Ngm: jQuery .height()and.width()不等价于clientHeightand clientWidth,因为它们不包括填充。.innerHeight()另一方面,不考虑滚动条...... HTML DOMclientHeight没有 jQuery 等效项。
2021-04-15 01:32:36
clientWidth 和 clientHeight 的 jQuery 等价物是什么?
2021-04-25 01:32:36
@RobertKoritnik arajek 在下面的答案中指出了 jQuery 等价物。
2021-04-27 01:32:36
jQuery $(document).height $(document).width 在不同浏览器上也返回变量值
2021-05-06 01:32:36

元素将可用的宽度,这通常是你的浏览器窗口。因此,由于浏览器的 chrome 边框、滚动条、菜单占用的垂直空间等等,跨浏览器的尺寸将不同......

高度也各不相同的事实也告诉我,您通过 cssbody/html高度设置为 100%,因为高度通常取决于body内的元素..

除非您通过 css 或它的 style 属性body元素的宽度设置为固定值,否则它的尺寸通常会因浏览器/版本而异,甚至可能取决于您为浏览器安装的插件。在这种情况下,常量值更像是规则的一个例外......

当您在其他不采用浏览器视口自动宽度的元素上调用 .clientWidth 时,它将始终返回元素 'width' + 'padding'。因此,宽度为 200 且填充为 20 的 div 将具有 clientWidth = 240(左右填充 20)。

然而,为什么要调用 clientWidth 的主要原因正是由于结果中可能存在的预期差异。如果你知道你会得到一个恒定的宽度并且值是已知的,那么调用 clientWidth 是多余的......

jQuery中offsetHeight和offsetWidth的等价物是$(window).width(), $(window).height()不是clientHeight和clientWidth

Element.clientWidth&Element.clientHeight 返回该元素内容的高度/宽度以及任何适用的填充。

这些的 jQuery 实现是: $(target).outerWidth()&$(target).outerHeight()

.clientWidth&.clientHeight包含在当前处于工作草案阶段的 CSSOM 视图module规范中。虽然现代浏览器对该规范有一致的实现,但为了确保跨旧版平台的性能一致,仍应使用 jQuery 实现。

附加信息:

  • https://developer.mozilla[dot]org/en-US/docs/Web/API/Element.clientWidth
  • https://developer.mozilla[dot]org/en-US/docs/Web/API/Element.clientHeight