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 相关文章推荐
Extjs学习过程中新手容易碰到的低级错误积累
Feb 11 Javascript
JavaScript随机排序(随即出牌)
Sep 17 Javascript
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形菜单
Nov 30 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
详解小程序缓存插件(mrc)
Aug 17 Javascript
Vue组件内部实现一个双向数据绑定的实例代码
Apr 04 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 Javascript
Nuxt.js 静态资源和打包的操作
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
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
PHP new static 和 new self详解
2017/02/19 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
js获取变量
2006/08/24 Javascript
犀利的js 函数集合
2009/06/11 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
Python中使用不同编码读写txt文件详解
2015/05/28 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
在线服装零售商:SheIn
2016/07/22 全球购物
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
企业厂长岗位职责
2013/12/17 职场文书
通信研究生自荐信
2014/02/01 职场文书
运动会入场词100字
2014/02/06 职场文书
nginx 配置指令之location使用详解
2022/05/25 Servers