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 相关文章推荐
jquery获取iframe中的dom对象(两种方法)
Jul 02 Javascript
js select option对象小结
Dec 20 Javascript
JavaScript中的正则表达式简明总结
Apr 04 Javascript
BootStrap扔进Django里的方法详解
May 13 Javascript
第五篇Bootstrap 排版
Jun 21 Javascript
微信小程序实现图片自适应(支持多图)
Jan 25 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 Javascript
js中getter和setter用法实例分析
Aug 14 Javascript
利用JS如何获取form表单数据
Dec 19 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
Jul 20 Javascript
Vuejs通过拖动改变元素宽度实现自适应
Sep 02 Javascript
7个你应该知道的JS原生错误类型
Apr 29 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
PHP 输出缓存详解
2009/06/20 PHP
php date与gmdate的获取日期的区别
2010/02/08 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
javascript 短路法代码精简
2009/08/20 Javascript
js function使用心得
2010/05/10 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
2015/01/09 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
vue-router传参用法详解
2019/01/19 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
[50:04]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第二局
2016/02/28 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
浅析HTML5 meta viewport参数
2020/10/28 HTML / CSS
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
党委书记岗位职责
2013/11/24 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
市场总经理岗位职责
2014/04/11 职场文书
论文指导教师评语
2014/04/28 职场文书
大学生求职计划书
2014/04/30 职场文书
小学生读书活动总结
2014/06/30 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
党性分析自查总结
2014/10/14 职场文书
质量负责人岗位职责
2015/02/15 职场文书
辩论赛新闻稿
2015/07/17 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
ICOM R71E和R72E图文对比解说
2022/04/07 无线电