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与ExtJS之选择实例分析
Aug 19 Javascript
自己做的模拟模态对话框实现代码
May 23 Javascript
IE、FF浏览器下修改标签透明度
Jan 28 Javascript
Javascript核心读书有感之词法结构
Feb 01 Javascript
jQuery获取当前点击的对象元素(实现代码)
May 19 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
JS实现简易的图片拖拽排序实例代码
Jun 09 Javascript
vuex页面刷新后数据丢失的方法
Jan 17 Javascript
vue+element-ui+axios实现图片上传
Aug 20 Javascript
JS实现打字游戏
Dec 17 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
Vue封装Axios请求和拦截器的步骤
Sep 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
PHP中,文件上传
2006/12/06 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php设计模式 State (状态模式)
2011/06/26 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP二维数组去重实例分析
2016/11/18 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
JQuery为textarea添加maxlength属性的代码
2010/04/07 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
django ajax json的实例代码
2018/05/29 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
python装饰器练习题及答案
2019/11/01 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
世界知名接发和假发品牌:Poze Hair
2017/03/08 全球购物
初入社会应届生求职信
2013/11/18 职场文书
政府法律服务方案
2014/06/14 职场文书
甜品店创业计划书
2014/08/14 职场文书
年底个人总结范文
2015/03/10 职场文书
2015年中学校长工作总结
2015/05/19 职场文书