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 常用操作整理 基础入门篇
Oct 14 Javascript
jquery 学习之一 对象访问
Nov 23 Javascript
JavaScript实现GriwView单列全选(自写代码)
May 13 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
使用 js+正则表达式为关键词添加链接
Nov 11 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
Jan 04 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
Mar 07 Javascript
JS中touchstart事件与click事件冲突的解决方法
Mar 12 Javascript
快速解决vue-cli不能初始化webpack模板的问题
Mar 20 Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 Javascript
Vue异步组件处理路由组件加载状态的解决方案
Sep 07 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面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
jQuery hover 延时器实现代码
2011/03/12 Javascript
基于JQuery的多标签实现代码
2012/09/19 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
JavaScript版TAB选项卡效果实例
2013/08/16 Javascript
js jquery ajax的几种用法总结(及优缺点介绍)
2014/01/28 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
详谈jQuery unbind 删除绑定事件 / 移除标签方法
2017/03/02 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
2018/09/18 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
python定向爬取淘宝商品价格
2018/02/27 Python
Python selenium的基本使用方法分析
2019/12/21 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
深入浅析Python 函数注解与匿名函数
2020/02/24 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
DIY手工制作经营店创业计划书
2014/02/01 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
党员批评与自我批评
2014/02/12 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
2014年手术室工作总结
2014/11/26 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书