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.innerHeight
为underfined
,所以为了兼容 IE7、IE8,需要使用document.documentElement.clientHeight
属性计算窗口高度。
计算滚动条宽度的方法
还是以弹窗为例,因为 IE 10 以上以及移动端浏览器的滚动条都是不占据页面宽度的透明样式(其中 IE 10 以上浏览器可以通过 CSS 属性还原原始的滚动条样式),所以为了进一步增强用户体验,我们还需要计算滚动条的宽度,根据情况添加合理的margin-left
数值。
计算滚动条宽度的方法比较简单,新建一个带有滚动条的 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
来精简代码。
原理就是判断 是文档高度大于可视区域高度。