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函数式编程
Sep 06 Javascript
jQuery插件编写步骤详解
Jun 03 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
基于AngularJS的简单使用详解
Sep 10 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
Mar 09 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
JS实现计算小于非负数n的素数的数量算法示例
Feb 26 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
javascript设计模式 ? 备忘录模式原理与用法实例分析
Apr 21 Javascript
vue实现自定义多选按钮
Jul 16 Javascript
JavaScript快速调试的两个技巧
Nov 04 Javascript
JavaScript canvas实现文字时钟
Jan 10 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
搜索引擎技术核心揭密
2006/10/09 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
2019/08/03 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
django_orm查询性能优化方法
2018/08/20 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
学校后勤岗位职责
2014/02/19 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
法定代表人资格证明书
2015/06/18 职场文书
请病假条范文
2015/08/17 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
Python 键盘事件详解
2021/11/11 Python
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技