jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)


Posted in Javascript onAugust 25, 2016

最近项目遇到了遮罩层的一些问题,总结一下:

弹出遮罩层

遮罩层弹出有非常多的方法,这里只写出本人用的代码,使用jq操作dom的方法进行实现的。

<style>.box{position:absolute;width:100%;left:50%;height:auto;z-index:100;background-color:#f5f5f5;border:1px #ddd solid;padding:1px;}</style><div id="bg" v-click="closeMask()"></div>
<div class="box" style="display:none">
<input v-click="closeMask()" class="inpt_bottomb white" value="取 消" type="button" />
<div class="clear"></div>
</div> 
</div>

#bg为透明度为0.6的一个遮罩页面,.box为遮罩层上的按钮。

//弹出遮罩
$("#bg").css({
display: "block", height: $(document).height()
});
var $box = $('.box');
$box.css({
//设置弹出层距离左边的位置
left: ($("body").width() - $box.width()) / 2 -5 + "px",
//设置弹出层距离上面的位置
top: ($(window).height() - $box.height()) + $(window).scrollTop() + "px",
display: "block"
});

有了触发遮罩的行为后,设置遮罩的高度为整个页面高度和可见性可见,然后对按钮出现的位置进行定位布局的设置,需要注意的是top属性要加上滚轮的高度,这样会保证我们的按钮会一直在视线之内。

关闭遮罩时也只需设置可见性即可。

效果图

jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)

遇到问题

功能上是可以实现的,但还是有些缺陷问题,比如页面过长时遮罩层也会随着页面进行滑动,按钮的位置就会发生变化:

jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)

解决方案PC端

pc端的解决思路就是在弹出遮罩层的时候取消已经存在的滚动条,达到无法滚动的效果。

也就是说给body添加overflow:hidden属性即可,IE6、7下不会生效,需要给html增加overflow:hidden属性。

解决方案移动端

移动端取消滚动条是达不到效果的,这时就需要去除遮罩层和按钮层的touchmove的默认事件,代码如下:

$('.box,#bg').bind("touchmove",function(e){
e.preventDefault();
});
Javascript 相关文章推荐
JavaScript继承方式实例
Oct 29 Javascript
学习javascript,实现插入排序实现代码
Jul 31 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
Feb 27 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
快速解决vue-cli不能初始化webpack模板的问题
Mar 20 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
详解小程序不同页面之间通讯的解决方案
Nov 23 Javascript
详解vue使用插槽分发内容slot的用法
Mar 28 Javascript
简单了解TypeScript中如何继承 Error 类
Jun 21 Javascript
jQuery实现图片下载代码
Jul 18 jQuery
JavaScript监听键盘事件代码实现
Jun 03 Javascript
jQuery组件easyui对话框实现代码
Aug 25 #Javascript
jQuery组件easyui基本布局实现代码
Aug 25 #Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 #Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
Aug 25 #Javascript
总结JavaScript的正则与其他语言的不同之处
Aug 25 #Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
Aug 25 #Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
Aug 25 #Javascript
You might like
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
php三维数组去重(示例代码)
2013/11/26 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
Vue实现动态创建和删除数据的方法
2018/03/17 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
详解Howler.js Web音频播放终极解决方案
2020/08/23 Javascript
python根据文件大小打log日志
2014/10/09 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
Python PyInstaller安装和使用教程详解
2020/01/08 Python
python中adb有什么功能
2020/06/07 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
加拿大时尚少女服装品牌:Garage
2016/10/10 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
服装行业创业计划书范文
2014/02/05 职场文书
销售口号大全
2014/06/11 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
项目负责人岗位职责
2015/02/15 职场文书
个人年终总结开头
2015/03/06 职场文书
Python机器学习之PCA降维算法详解
2021/05/19 Python
python ConfigParser库的使用及遇到的坑
2022/02/12 Python