失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > JS有哪些属性可以判断页面是否存在滚动条

JS有哪些属性可以判断页面是否存在滚动条

时间:2021-03-06 08:35:40

相关推荐

JS有哪些属性可以判断页面是否存在滚动条

web前端|js教程

javascript,页面,判断

web前端-js教程前言

安卓系统上层应用源码,vscode配置设计,ubuntu 显示目录,run tomcat,sqlite 长连接,win服务器重定向,wordpress 订单插件,前端框架react特性,excel vba 爬虫,php是世界上最好的编程语言,成都SEO优化排名,旅游电子商务网站功能,水果忍者网页,小米商城html模板,web选择模板页面,数据库工资管理系统,bt种子程序lzw

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

优酷资源采集网站源码,如何删除VScode的配置,ubuntu安装yast,启动tomcat并访问,VC爬虫代码,php时间戳在线转换日期,seo推广运营有前途吗, 网站性能工具,qq认证空间模板lzw

为什么要判断滚动条

码云下载源码,Ubuntu软件默认位置,tomcat添加域名解析,网站爬虫技术,影视php解析api工具,阆中seolzw

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

为了增强用户体验,通过判断是否有滚动条而添加margin-left属性以抵消overflow: hidden之后的滚动条位置。

判断是否有滚动条的方法

其实只需要一行 JS 就可以,测试兼容 IE7

function hasScrollbar() { return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight);}

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

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

计算滚动条宽度的方法

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

计算滚动条宽度的方法比较简单,新建一个带有滚动条的 p 元素,通过该元素的offsetWidthclientWidth的差值即可获得,我在此借鉴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来精简代码。

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

如果觉得《JS有哪些属性可以判断页面是否存在滚动条》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。