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 prop的使用介绍及与attr的区别
Dec 19 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
javascript搜索框点击文字消失失焦时文本出现
Sep 18 Javascript
实现JavaScript高性能的数据存储
Dec 11 Javascript
原生javascript实现图片放大镜效果
Jan 18 Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 Javascript
分分钟玩转Vue.js组件(二)
Mar 01 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 Javascript
新手入门js闭包学习过程解析
Oct 08 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 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中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php实现对象克隆的方法
2015/06/20 PHP
thinkPHP5.0框架API优化后的友好性分析
2017/03/17 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
探究JavaScript中的五种事件处理程序方式
2016/12/07 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
综合办公室主任职责
2013/12/16 职场文书
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
springboot如何初始化执行sql语句
2021/06/22 Java/Android