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 相关文章推荐
仿163填写邮件地址自动显示下拉(无优化)
Nov 05 Javascript
JavaScript 事件参考手册
Dec 24 Javascript
JScript分割字符串示例代码
Sep 04 Javascript
详解JavaScript中undefined与null的区别
Mar 29 Javascript
javascript 回调函数详解
Nov 11 Javascript
js 加密压缩出现bug解决方案
Nov 25 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
利用jQuery实现打字机字幕效果实例代码
Sep 02 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
Sep 23 Javascript
微信小程序的日期选择器的实例详解
Sep 29 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 jQuery
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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
PHP高级OOP技术演示
2009/08/27 PHP
PHP中$_SERVER的详细参数与说明介绍
2013/10/26 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
PHP fclose函数用法总结
2019/02/15 PHP
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
python 生成目录树及显示文件大小的代码
2009/07/23 Python
使用Scrapy爬取动态数据
2018/10/21 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
python怎么提高计算速度
2020/06/11 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
财务部出纳岗位职责
2013/12/22 职场文书
贷款委托书
2014/08/01 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
财务部岗位职责范本
2015/04/14 职场文书
鸦片战争观后感
2015/06/09 职场文书
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
vue router 动态路由清除方式
2022/05/25 Vue.js