document.documentElement.clientWidth - 返回错误值

Posted

技术标签:

【中文标题】document.documentElement.clientWidth - 返回错误值【英文标题】:document.documentElement.clientWidth - returns wrong value 【发布时间】:2020-05-27 19:55:31 【问题描述】:

我尝试读取当前窗口宽度。目前在 chrome 开发者工具中设置为 768。

但是如果我在控制台中调用document.documentElement.clientWidth,那么我会得到758


对建议答案的回答:不,jquery 也没有解决它。如果我打电话给$(window).width();,那么我也会得到758。如果我打电话给$(document).width();,我会得到992

【问题讨论】:

这能回答你的问题吗? clientHeight/clientWidth returning different values on different browsers 不,jquery 也没有解决它。如果我打电话给$(window).width(),我也会得到758。如果我打电话给$(document).width();,我会得到992 【参考方案1】:

MDN states那个

对于内联元素和没有 CSS 的元素,Element.clientWidth 属性为零;否则,它是以像素为单位的元素的内部宽度。它包括内边距,但不包括边框、边距和垂直滚动条(如果存在)。

我在您的屏幕截图上看到了一个滚动条。也许是这个原因?

【讨论】:

你是对的!我有一个正好 10px 宽的滚动条,这确实是原因。谢谢。【参考方案2】:

Curveball 为我指明了正确的方向。我确实在使用宽度为 10px 的自定义滚动条,调用 document.documentElement.clientWidth 时会减去该滚动条。

/* Scrollbar */
  ::-webkit-scrollbar 
    width: 10px;
  

我解决了这个问题:

window.innerWidth;    // output: 768

【讨论】:

以上是关于document.documentElement.clientWidth - 返回错误值的主要内容,如果未能解决你的问题,请参考以下文章

document.documentElement和document.body区别介绍

document.documentElement.scrollTop(获取滚动条位置)

document.body 与 document.documentElement区别介绍

document.body 与 document.documentElement区别介绍

document.documentElement.scrollTop(获取滚动条位置)

document.documentElement.clientHeight 和 document.body.clientHeight