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 相关文章推荐
Javascript 面向对象 重载
May 13 Javascript
快速排序 php与javascript的不同之处
Feb 22 Javascript
js微信分享API
Oct 11 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
Feb 20 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
微信小程序实现批量倒计时功能
Nov 01 Javascript
10种JavaScript最常见的错误(小结)
Jun 21 Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 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
php a simple smtp class
2007/11/26 PHP
php自动适应范围的分页代码
2008/08/05 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
php实现简单爬虫的开发
2016/03/28 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
2019/03/29 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python多线程实现同步的四种方式
2017/05/02 Python
在python tkinter中Canvas实现进度条显示的方法
2019/06/14 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python 如何展开嵌套的序列
2020/08/01 Python
Python 实现微信自动回复的方法
2020/09/11 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
基于python模拟bfs和dfs代码实例
2020/11/19 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
移动端rem布局的两种实现方法
2018/01/03 HTML / CSS
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
Hotels.com爱尔兰:全球酒店预订
2017/02/24 全球购物
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
校本课程教学计划
2015/01/19 职场文书
生产现场禁烟通知
2015/04/23 职场文书
唐山大地震的观后感
2015/06/05 职场文书
2016猴年春节问候语
2015/11/11 职场文书
技术转让协议书
2016/03/19 职场文书