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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
jQuery 源码分析笔记(4) Ready函数
Jun 02 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
javascript实现延时显示提示框特效代码
Apr 27 Javascript
Angular1.x复杂指令实例详解
Mar 01 Javascript
微信小程序中显示html格式内容的方法
Apr 25 Javascript
微信小程序 POST请求的实例详解
Sep 29 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
Oct 27 Javascript
vue超时计算的组件实例代码
Jul 09 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
Aug 28 Javascript
在Vue项目中使用Typescript的实现
Dec 19 Javascript
Vue Element plus使用方法梳理
Dec 24 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
谈谈PHP语法(3)
2006/10/09 PHP
php while循环得到循环次数
2013/10/26 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
phplot生成图片类用法详解
2015/01/06 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
再论Javascript的类继承
2011/03/05 Javascript
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
使用jquery实现简单的ajax
2013/07/08 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
获取select的value、text值的简单示例(jquery与javascript)
2016/12/07 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
JS 事件机制完整示例分析
2020/01/15 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
原生js实现弹幕效果
2020/11/29 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python字符串对其居中显示的方法
2015/07/11 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
OpenCV Python实现拼图小游戏
2020/03/23 Python
职业生涯规划书范文
2014/03/10 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
语文教研活动总结
2014/07/02 职场文书
销售督导岗位职责
2015/04/10 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书