php页面拖动条,JS抓取页面滚动条

这次给大家带来JS抓取页面滚动条,JS抓取页面滚动条的注意事项有哪些,下面就是实战案例,一起来看一下。

最近在写插件的过程中,需要使用 JS 判断是否有滚动条,搜了一下,大致方法都差不多,但都有些啰嗦,代码不够简洁。最终通过参考不同方法,写了一个比较简单的方法

前言

最近在写插件的过程中,需要使用 JS 判断是否有滚动条,搜了一下,大致方法都差不多,但都有些啰嗦,代码不够简洁。最终通过参考不同方法,写了一个比较简单的方法。在判断滚动条的同时也需要计算滚动条的宽度,通过本篇文章一并与大家分享。

为什么要判断滚动条

fc9ea174fbe3785f254fc188e91f0a84.png

判断滚动条的需求在弹窗插件中用的较多,因为弹窗大多会添加 overflow: hidden的属性,如果页面比较长的话,添加这个属性之后页面会有晃动。

为了增强用户体验,通过判断是否有滚动条而添加 overflow: hidden之后的滚动条位置。

判断是否有滚动条的方法

其实只需要一行 JS 就可以,测试兼容 IE7function hasScrollbar() {

return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);

}

一般情况下,使用 document.body.scrollHeight> window.innerHeight就可以判断。

但是在 IE7,IE8 中 window.innerHeight为 underfined,所以为了兼容 IE7、IE8,需要使用document.documentElement.clientHeight属性计算窗口高度。

计算滚动条宽度的方法

还是以弹窗为例,因为 IE 10 以上以及移动端浏览器的滚动条都是不占据页面宽度的透明样式(其中 IE 10 以上浏览器可以通过 CSS 属性还原原始的滚动条样式),所以为了进一步增强用户体验,我们还需要计算滚动条的宽度,根据情况添加合理的 margin-left数值。

62466b3e1b5c5313a25818d5331445c7.png

计算滚动条宽度的方法比较简单,新建一个带有滚动条的 p 元素,通过该元素的 offsetWidth 和clientWidth的差值即可获得,我在此借鉴 Magnific-popup中的方法function getScrollbarWidth() {

var scrollp = document.createElement("p");

scrollp.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';

document.body.appendChild(scrollp);

var scrollbarWidth = scrollp.offsetWidth - scrollp.clientWidth;

document.body.removeChild(scrollp);

return scrollbarWidth;

}

总结

使用 JS 实现一个功能可能并不困难,但作为编程人员应该时刻思考如何更简单更优雅的实现这个功能,并且时刻以提升用户体验为原则。对于条件判断,也许十行的逻辑判断可能只需要一行,最近感受极为深刻,而且要善于使用三元表达式替代 if..else来精简代码。

原理就是判断 是文档高度大于可视区域高度。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值