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 相关文章推荐
用js判断浏览器是否是IE的比较好的办法
May 08 Javascript
js中if语句的几种优化代码写法
Mar 12 Javascript
node.js中的fs.readdir方法使用说明
Dec 17 Javascript
JS中字符串trim()使用示例
May 26 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
Aug 21 Javascript
在React框架中实现一些AngularJS中ng指令的例子
Mar 06 Javascript
jquery自适应布局的简单实例
May 28 Javascript
Vue 过渡(动画)transition组件案例详解
Jan 22 Javascript
JS实现动态给标签控件添加事件的方法示例
May 13 Javascript
原生JS+Canvas实现五子棋游戏实例
Jun 19 Javascript
Vue开发之封装上传文件组件与用法示例
Apr 25 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php动态生成版权所有信息的方法
2015/03/24 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
jquery each()源代码
2011/02/14 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
2017/03/04 Javascript
JavaScript实现三级联动效果
2017/07/15 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
vue实现购物车案例
2020/05/30 Javascript
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
Python 依赖库太多了该如何管理
2019/11/08 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
Collection和Collections的区别
2016/05/02 面试题
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
统计每一学生的平均成绩
2014/06/06 面试题
小学新学期教师寄语
2014/01/18 职场文书
校优秀毕业生主要事迹
2014/05/26 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
自我工作评价范文
2015/03/06 职场文书
幼儿园开学通知
2015/04/24 职场文书
电影复兴之路观后感
2015/06/02 职场文书
高三毕业感言
2015/07/30 职场文书
2019年思想汇报
2019/06/20 职场文书
详解Nginx 工作原理
2021/03/31 Servers
MySQL数字类型自增的坑
2021/05/07 MySQL
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python