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 相关文章推荐
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
动态载入js提高网页打开速度的方法
Jul 04 Javascript
js实现超简单的展开、折叠目录代码
Aug 28 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
vue 登录滑动验证实现代码
Aug 24 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 Javascript
Node绑定全局TraceID的实现方法
Nov 14 Javascript
Angular value与ngValue区别详解
Nov 27 Javascript
JS 5种遍历对象的方式
Jun 16 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
功能强大的php文件上传类
2016/08/29 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
常用一些Javascript判断函数
2012/08/14 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
原生JavaScript制作计算器
2016/10/16 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
webpack进阶——缓存与独立打包的用法
2017/08/02 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
Vue中qs插件的使用详解
2020/02/07 Javascript
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
Python实现登录接口的示例代码
2017/07/21 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
浅析PEP572: 海象运算符
2019/10/15 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
python实现简单飞行棋
2020/02/06 Python
基于python实现查询ip地址来源
2020/06/02 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
开学典礼演讲稿
2014/05/23 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
欢迎家长标语
2014/10/08 职场文书
农村婚庆主持词
2015/06/29 职场文书
2016年教师新年寄语
2015/08/18 职场文书