JS弹出层遮罩,隐藏背景页面滚动条细节优化分析


Posted in Javascript onApril 29, 2016

一、去除滚动条方法

给body添加overflow:hidden属性即可,IE6、7下不会生效,需要给html增加overflow:hidden属性

样式中需要对IE6、7及其它浏览器用hack辨别,这是因为当页面拉到下面时如果html或body被overflow:hidden,透明弹层下面的页面就会被部分正常隐藏,通过透明看到的一片的灰度,具体颜色跟平台及用户设置背景色有关。

body或html去掉滚动条后,页面会有一个滚动条宽度/2的跳动!这个跳动对用户体验来十分不好,因此给body添加一下右padding,大小为滚动条的宽度。windows平台下滚动条的宽度为17px,linux平台下不同滚动器滚动条宽度不一致,可以用相关代码计算出滚动条的宽度,以下以windows平台为例。

相关代码:

document.documentElement.style.cssText = ‘overflow:none;+overflow:hidden;_overflow:hidden;';
document.body.style.cssText = ‘overflow:hidden;+overflow:none;_overflow:none;padding:0 17px 0 0;';

以上代码不考虑html或body是否有内联样式 ,如果html或body有内联样式则需要累加,否则会清空原有样式。

二、去除隐患其它方法滚动页面(防止误操作)

隐藏滚动条后,用鼠标滚轮滚动页面确实不会动了,以为这就ok了,不是…

键盘快捷键也可以操作浏览器的一些操作,与滚动页面相关的,比如:上下按键、翻页按键等。针对键盘快捷键,需要取消他们的默认操作。

三、添加弹出层样式

给body添加全局样式(兼容IE6)

height:100%;

给弹层添加滚动样式

overflow-y: auto;
width: 100%;
height: 100%;
left:0;
_padding:0 17px 0 0;   //IE6bug,子元素绝对定位后对于父元素的padding依然有效

以上这篇JS弹出层遮罩,隐藏背景页面滚动条细节优化分析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一组JS创建和操作表格的函数集合
May 07 Javascript
js表格分页实现代码
Sep 18 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
Jan 21 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
删除table表格行的实例讲解
Sep 21 Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
JS基于ES6新特性async await进行异步处理操作示例
Feb 02 Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 Javascript
微信小程序点击顶部导航栏切换样式代码实例
Nov 12 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
Aug 31 Javascript
vue生命周期钩子函数以及触发时机
Apr 26 Vue.js
JavaScript架构搭建前端监控如何采集异常数据
Jun 25 Javascript
老生常谈遮罩层 滚动条的问题
Apr 29 #Javascript
弹出遮罩层后禁止滚动效果【实现代码】
Apr 29 #Javascript
一系列Bootstrap导航条使用方法分享
Apr 29 #Javascript
Bootstrap实现下拉菜单效果
Apr 29 #Javascript
Easyui Treegrid改变默认图标的方法
Apr 29 #Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 #Javascript
JS组件Bootstrap导航条使用方法详解
Apr 29 #Javascript
You might like
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
Jquery实现简单的动画效果代码
2012/03/18 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
用console.table()调试javascript
2014/09/04 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
AngularJS使用ng-repeat遍历二维数组元素的方法详解
2017/11/11 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
跟老齐学Python之print详解
2014/09/28 Python
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
Python线性方程组求解运算示例
2018/01/17 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python opencv摄像头的简单应用
2019/06/06 Python
python批量下载抖音视频
2019/06/17 Python
python如何求100以内的素数
2020/05/27 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
django 将自带的数据库sqlite3改成mysql实例
2020/07/09 Python
python 对xml解析的示例
2021/02/27 Python
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
户籍证明的格式
2014/01/13 职场文书
小学教研工作制度
2014/01/15 职场文书
剪彩仪式主持词
2014/03/19 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
项目合作协议书
2014/09/23 职场文书
初中毕业生自我评价
2015/03/02 职场文书
终止劳动合同通知书
2015/04/16 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL