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 相关文章推荐
JQuery实现点击div以外的位置隐藏该div窗口
Sep 13 Javascript
JavaScript 垃圾回收机制分析
Oct 10 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
May 15 Javascript
js面向对象编程之如何实现方法重载
Jul 02 Javascript
小白谈谈对JS原型链的理解
May 03 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
Jan 20 Javascript
vue实现简单表格组件实例详解
Apr 16 Javascript
基于 Bootstrap Datetimepicker 联动
Aug 03 Javascript
JS实现区分中英文并统计字符个数的方法示例
Jun 09 Javascript
javascript json对象小技巧之键名作为变量用法分析
Nov 11 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
May 09 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清除bom示例
2014/03/03 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
asp.net+js 实现无刷新上传解析csv文件的代码
2010/05/17 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
jquery 列表双向选择器之改进版
2013/08/09 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
详解在Python和IPython中使用Docker
2015/04/28 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
python实现IOU计算案例
2020/04/12 Python
python函数超时自动退出的实操方法
2020/12/28 Python
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
.net开发工程师面试题
2014/02/25 面试题
国际贸易求职信
2014/07/05 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
公务员政审个人总结
2015/02/12 职场文书
微信搭讪开场白
2015/05/28 职场文书
优质服务标语口号
2015/12/26 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL