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跑马灯悬停放大效果实现代码
Dec 12 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
Jquery使用css方法改变样式实例
May 18 Javascript
基于javascript数组实现图片轮播
May 02 Javascript
js将json格式的对象拼接成复杂的url参数方法
May 25 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
Vue2学习笔记之请求数据交互vue-resource
Feb 23 Javascript
前端常见跨域解决方案(全)
Sep 19 Javascript
Vue 组件修改根实例的数据的方法
Apr 02 Javascript
深度了解vue.js中hooks的相关知识
Jun 14 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 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实现禁用IE和火狐的缓存问题
2012/12/03 PHP
php中smarty区域循环的方法
2015/06/11 PHP
jQuery向下滚动即时加载内容实现的瀑布流效果
2016/01/07 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
vue.js vue-router如何实现无效路由(404)的友好提示
2017/12/20 Javascript
如何用RxJS实现Redux Form
2018/12/29 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
js页面加载后执行的几种方式小结
2020/01/30 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[08:47]2018国际邀请赛 OG战队举杯时刻
2018/08/29 DOTA
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
anaconda如何查看并管理python环境
2019/07/05 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
小学生家长评语大全
2014/02/10 职场文书
2015年教学工作总结
2015/04/02 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫
MySQL主从切换的超详细步骤
2022/06/28 MySQL