从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍JS如何判断页面是否有滚动条,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
10多年专注成都网站制作,成都定制网站,个人网站制作服务,为大家分享网站制作知识、方案,网站设计流程、步骤,成功服务上千家企业。为您提供网站建设,网站制作,网页设计及定制高端网站建设服务,专注于成都定制网站,高端网页制作,对成都集装箱等多个领域,拥有丰富的网站营销经验。
为什么要判断滚动条
判断滚动条的需求在弹窗插件中用的较多,因为弹窗大多会添加 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
数值。
计算滚动条宽度的方法比较简单,新建一个带有滚动条的 div 元素,通过该元素的 offsetWidth
和 clientWidth
的差值即可获得,我在此借鉴 Magnific-popup
中的方法
function getScrollbarWidth() { var scrollDiv = document.createElement("div"); scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;'; document.body.appendChild(scrollDiv); var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; document.body.removeChild(scrollDiv); return scrollbarWidth; }
以上是“JS如何判断页面是否有滚动条”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图