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字符串转换成数字与数字转换成字符串的实现方法
Jan 08 Javascript
JavaScript类继承及实例化的方法
Jul 25 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
Jul 29 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
Feb 28 Javascript
react开发中如何使用require.ensure加载es6风格的组件
May 09 Javascript
关于在mongoose中填充外键的方法详解
Aug 14 Javascript
BootStrap给table表格的每一行添加一个按钮事件
Sep 07 Javascript
layui时间控件选择时间范围的实现方法
Sep 28 Javascript
JS实现的雪花飘落特效示例
Dec 03 Javascript
Vue简单实现原理详解
May 07 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PHP 高手之路(二)
2006/10/09 PHP
PHP 文件系统详解
2012/09/13 PHP
php+memcache实现的网站在线人数统计代码
2014/07/04 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
input 输入框内的输入事件详细分析
2010/03/17 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
js数字转换为float,取N位小数
2014/02/08 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
javascript属性访问表达式用法分析
2015/04/25 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
python实现自动更换ip的方法
2015/05/05 Python
Python中的左斜杠、右斜杠(正斜杠和反斜杠)
2016/08/30 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
应征英语教师求职信
2013/11/27 职场文书
销售会计工作职责
2013/12/02 职场文书
一名毕业生的自我鉴定
2013/12/04 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
公司联欢会主持词
2015/07/04 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
2019年教师入党申请书
2019/06/27 职场文书
JavaScript流程控制(循环)
2021/12/06 Javascript