javascript - 有垂直或水平滚动条吗?

标签 javascript html css

我正在尝试找到一种方法来告诉我页面是否有垂直和水平滚动条,但没有办法工作。
我不会使用 jQuery。
这就是我所做的:

function hasVerticalScroll() {
    return document.body.getBoundingClientRect().height >= window.innerHeight;
}

function hasHorizontalScroll() {
    return document.body.getBoundingClientRect().width >= window.innerWidth;
}

我在没有滚动条的空白页面和有滚动条的页面上测试了这段代码,但我得到了错误的结果(例如,我知道在没有滚动条的页面上有一个滚动条)。

有什么想法吗?

最佳答案

在这里你可以看到我在哪里尝试查询几个属性:

将#shell 设置为大于视口(viewport)大小: http://jsfiddle.net/mori57/8t8Dy/5/

将#shell 设置为低于视口(viewport)大小: http://jsfiddle.net/mori57/8t8Dy/6/

我想我找到了一个您可以使用的键,至少可以用于滚动测试...如您所见,在#shell 设置为超过视口(viewport)大小 (window.innerWidth) 的宽度的情况下, body scrollWidth 大于 getBoundingClientWidth().width 报告的宽度。

(抱歉,Pragnesh,您的函数在我的示例中似乎不起作用,它也包含在我的 jsFiddle 测试页面中。)

为此,以下函数应该在大多数情况下有效:

function HasHorizontalScroll(){
     return document.body.scrollWidth > window.innerWidth;
}

内容小于视口(viewport)大小的情况: http://jsfiddle.net/mori57/8t8Dy/11/

内容大于视口(viewport)大小的情况: http://jsfiddle.net/mori57/8t8Dy/12/

关于javascript - 有垂直或水平滚动条吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583756/

相关文章:

javascript - Angularjs 指令

html - DIV 不会隐藏在使用媒体查询的移动设备上

javascript - Windows 8 HTML 5 Web APP AJAX post 不起作用

css - 调整浏览器窗口大小时,固定位置滚动元素流出屏幕

css - CSS 中隐式和显式定义的列

javascript - php设置下拉菜单和单选按钮的值以及从数据库获取的数据

javascript - 如何使用 Node js检查给定的ip是否在给定的ip范围之间

javascript - 验证成功控制

java - Http header 设置问题

javascript - 图像将整个 body 向右移动