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 相关文章推荐
些很实用且必用的小脚本代码
Jun 26 Javascript
jquery获取所有选中的checkbox实现代码
May 26 Javascript
将form表单通过ajax实现无刷新提交的简单实例
Oct 12 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
基于input动态模糊查询的实现方法
Dec 12 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
May 02 Javascript
Angular学习教程之RouterLink花式跳转
May 03 Javascript
在react中使用vuex的示例代码
Jul 30 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
微信小程序实现音乐播放页面布局
Dec 11 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
老生常谈遮罩层 滚动条的问题
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
页面乱码问题的根源及其分析
2013/08/09 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
layui form表单提交之后重新加载数据表格的方法
2019/09/11 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
原生JavaScript创建不可变对象的方法简单示例
2020/05/07 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
vue实现验证用户名是否可用
2021/01/20 Vue.js
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python中的super()方法使用简介
2015/08/14 Python
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
python的numpy模块安装不成功简单解决方法总结
2017/12/23 Python
Python反射和内置方法重写操作详解
2018/08/27 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python中的colorlog库使用详解
2019/07/05 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
python 下划线的不同用法
2020/10/24 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
2014年精神文明工作总结
2014/12/23 职场文书
技术负责人岗位职责
2015/02/10 职场文书
同意报考公务员证明
2015/06/17 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript