获取浏览器视口的宽度和高度,无论内容大小如何且不调整为 100%?

Posted

技术标签:

【中文标题】获取浏览器视口的宽度和高度,无论内容大小如何且不调整为 100%?【英文标题】:Get the browser viewport width and height no matter the size of the contents and without sizing to 100%? 【发布时间】:2020-03-31 17:52:57 【问题描述】:

有没有办法在不将正文宽度和高度设置为 100% 的情况下获取页面视口的宽度和高度而不是页面的内容?

我找到的答案要求将 html 和 body 元素设置为 100% 宽度和 100% 高度。

页面上的内容有时会超出视口大小。我无法将身体切换到 100%,然后检查值然后恢复。

在我看来应该有一个简单的属性:

document.body.viewportWidth;
document.body.viewportHeight;

关于窗口调整大小并排除 chrome 的更新。

这里有相关问题:

HTML5 Canvas 100% Width Height of Viewport?

更新: 我一直在用这个:

var availableWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
var availableHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;

可能是视口值正确,但元素本身正在增长或缩小。

我在documentElement docs 中找不到 document.documentElement.clientWidth 或 document.documentElement.clientHeight。

更新 2: 看起来这可能是我的错误。我在日志中注意到,有时该元素没有计算出宽度或高度,可能是因为它尚未添加到页面中。

var elementWidth = parseFloat(getComputedStyle(element, "style").width);
var elementHeight = parseFloat(getComputedStyle(element, "style").height);

我认为我上面已经使用的代码是正确的。

更新 3: 我在获取视口大小时发现了这个page。

【问题讨论】:

clientWidth 和 clientHeight 在CSSOM View spec 中定义,documentElement 给出了视口尺寸减去任何滚动条。 window.innerWidth 和 innerHeight 也在那里定义。它们提供视口尺寸,包括任何滚动条。 【参考方案1】:

这有帮助吗?

document.documentElement.clientWidth
document.documentElement.clientHeight

【讨论】:

【参考方案2】:

window.innerWidth 和 window.innerHeight 是否适合您?

【讨论】:

【参考方案3】:

我可能无法正确理解您的问题,但如果您正在寻找浏览器窗口的高度和宽度,您可以使用window.innerHeightwindow.innerWidth

这里有更多关于窗口height 和width 的信息,可能会有用。

【讨论】:

是的,我一直在使用类似的东西。我已经更新了帖子。我认为我的问题可能无关紧要。

以上是关于获取浏览器视口的宽度和高度,无论内容大小如何且不调整为 100%?的主要内容,如果未能解决你的问题,请参考以下文章

根据宽度和高度保持纵横比

根据宽度和高度保持纵横比

Flexslider 视口高度在调整大小时无响应

JavaScript 获取浏览器视口宽度和高度

JS获取浏览器中的各种宽高值

获取浏览器视口宽度和高度