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的Tab选项框效果代码(插件)
Mar 01 Javascript
js浏览器本地存储store.js介绍及应用
May 13 Javascript
jQuery中get和post方法传值测试及注意事项
Aug 08 Javascript
JS动态显示表格上下frame的方法
Mar 31 Javascript
JS实现Fisheye效果动感放大菜单代码
Oct 21 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
Bootstrap提示框效果的实例代码
Jul 12 Javascript
JavaScript Canvas实现验证码
Aug 02 Javascript
解决angularJS中input标签的ng-change事件无效问题
Sep 13 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
Sep 20 Javascript
vue+axios+promise实际开发用法详解
Oct 15 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 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
headjs实现网站并行加载但顺序执行JS
2016/11/29 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
js案例之鼠标跟随jquery版(实例讲解)
2017/07/21 jQuery
Vue的百度地图插件尝试使用
2017/09/06 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
react redux入门示例
2018/04/19 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
vue中created和mounted的区别浅析
2019/08/13 Javascript
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python性能优化的20条建议
2014/10/25 Python
Python实例方法、类方法、静态方法的区别与作用详解
2019/03/25 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
波兰家居饰品和厨房配件网上商店:Maleomi
2020/12/15 全球购物
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
旅游节目策划方案
2014/05/26 职场文书
2014年小学工作总结
2014/11/26 职场文书
2015年招聘工作总结
2014/12/12 职场文书
公务员个人考察材料
2014/12/23 职场文书