JS弹出层制作,以及移动端禁止弹出层下内容滚动,overflow:hidden移动端失效问题
HTML
<div class="layer">
<div class="menu-list">
<span>社会</span>
<span>历史</span>
<span>军事</span>
<span>娱乐</span>
<span>电影</span>
<span>财经</span>
<span>体育</span>
<span>科技</span>
<span>手机</span>
<span>健康</span>
<span>情感</span>
<span>亲子</span>
</div>
</div>
CSS
.preHander{
overflow: hidden;
}
当设置背景层内容overflow:hidden的时候在PC端和模拟器上的有的,但是到的安卓、IOS真机运行的时候失效!
JS
$('.menu').click(function(){
$('.layer').show()
var scroTop=$(document).scrollTop() //滚动条距离顶部的位置
$('.layer').css('top',scroTop+'px') //弹出框顶部位置
$('.menu-list').css('z-index','9999')
$('html,body').addClass('preHander') //禁止弹出框下面内容滚动,但是在真机运行失效// 添加触摸监听事件,如果手指触摸到阴影区域,弹出层消失!
document.addEventListener('touchstart',touch, false)
function touch(event){
var event=event || window.event;
if(!$(event.target).is($('.menu-list'))&&$(event.target).parent('.menu-list').length===){
$(".layer").hide();
$('html,body').removeClass('preHander') //解除弹出框下面内容滚动
}
}
})
所以为了禁止弹出层下内容的滚动,必须要禁止滑动事件传递到下一层,所以要防止滑动事件冒泡
// 当弹出层出现的时候,禁止弹出层背景层滑动,阻止事件传递冒泡
function move(e){
e.preventDefault();//禁止事件冒泡
}
当弹出层出现的时候
// 当弹出层出现的时候,禁止弹出层背景层滑动,阻止事件传递冒泡
function move(e){
e.preventDefault();//禁止事件冒泡
}
$('.layer').on('touchmove',move, false)//弹出层出现,弹出层的背景层阻止默认滑动事件
所以最后的JS应该是
// 点击菜单函数封装=========================================================
function menushow(){
$('.menu').click(function(){
$('.layer').show()
var scroTop=$(document).scrollTop() //滚动条距离浏览器顶部的位置
$('.layer').css('top',scroTop+'px') //弹出框顶部相对于浏览器的位置,就是在可视窗口的顶部
$('.menu-list').css('z-index','')
// 当弹出层出现的时候,禁止弹出层背景层滑动,阻止事件传递冒泡
function move(e){
e.preventDefault();//禁止事件冒泡
}
$('.layer').on('touchmove',move, false)//弹出层出现,弹出层的背景层阻止默认滑动事件
// 添加触摸监听事件,如果手指触摸到阴影区域,弹出层消失!
document.addEventListener('touchstart',touch, false)
function touch(event){
var event=event || window.event;
if(!$(event.target).is($('.menu-list'))&&$(event.target).parent('.menu-list').length===){
$(".layer").hide();
}
}
})
}
JS弹出层制作,以及移动端禁止弹出层下内容滚动,overflow:hidden移动端失效问题的更多相关文章
- jquery制作弹出层带遮罩效果,点击阴影部分层消失
jquery制作弹出层带遮罩效果,点击阴影部分层消失. 整体还是比较简单的. HTML代码很简单 <a href="#" class="big-link" ...
- pc端有弹出层 并有滚动的时候遇到的问题以及解决
有时候页面会遇到这样一个问题,页面有个弹出层 ,弹出层是有动条的,当弹出层滚完的时候,后面的页面也会滚动,但是我们希望是后面的页面不滚动;代码如下 1:弹出层出现的时候设置 $('body').css ...
- JQuery弹出层,点击按钮后弹出遮罩层,有关闭按钮【转】
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <t ...
- 每日技术总结:Better-scroll应用于弹出层内容滚动
一.Better-scroll在项目中的应用 Better-scroll这款滚动插件还是很好用的,通常不会有什么问题.但偶尔总会出点意外.今天再次使用better-scroll,记录一下这次顺利的过程 ...
- layui弹出层处理(获取、操作弹出层数据等)
要点: 字符串被渲染为弹窗层之后,回自动转换为DOM,可以使用jq进行各种操作 <!DOCTYPE html> <html> <head> <meta cha ...
- JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
- 移动端页面 弹出框滚动,底部body锁定,不滚动 / 微信网页禁止回弹效果
需求:页面有弹出层菜单,当弹出层菜单超出屏幕可视区域时,不能滚动.加上滚动后,底部body的滚动事件如何禁止,加上了overflow:hidden;还是不可用. 如下图:地区弹出框可以滚动,而底部的b ...
- 原生js日期时间插件鼠标点击文本框弹出日期时间表格选择日期时间
原文出处 (这是我从互联网上搜来的,感觉能满足各方面的需求.个人感觉挺不错的,所以后期修改了一下向大家推荐!) 效果图: html代码: <!DOCTYPE html PUBLIC " ...
- JS 判断 Radio 单选按钮是否为选中状态 并弹出 值信息
今天项目中所解决的问题:JS 判断 Radio 单选按钮是否为选中状态 并弹出 值信息,一开始总是获取不到 radio 的值,后来发现逻辑存在些问题,特此共享该代码留笔记 和 分享给遇到 这类问题的 ...
随机推荐
- map的使用-Hdu 2648
Shopping Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 「NOIP2013」货车运输
传送门 Luogu 解题思路 首先 \(\text{Kruskal}\) 一下,构造出一棵森林. 并查集还要用来判断连通性. 倍增 \(\text{LCA}\) 的时候顺便维护一下路径最小值即可. 细 ...
- 使用 vant 的 v-lazy 实现图片 vue 在移动端的懒加载
官方文档:https://youzan.github.io/vant/#/zh-CN/lazyload 引入 Lazyload 是 Vue 指令,使用前需要对指令进行注册 import Vue fro ...
- 【代码学习】PYTHON 抛出异常
class ShortInputException(Exception): '''你定义的异常类.''' def __init__(self, length, atleast): Exception. ...
- 【代码总结】PHP面向对象之抽象类
一.什么是抽象方法? 一个方法如果没有方法体(不使用"{}",直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法 1.声明一个方法,不使用{},而直接分号结束 ...
- Euler Sums系列(二)
\[\Large\sum_{n=0}^\infty \frac{H_{2n+1}}{(2n+1)^2}=\frac{21}{16}\zeta(3)\] \(\Large\mathbf{Proof:}\ ...
- Cisco AP-ROMMON升级AP镜像
Rommon is Cisco bootloader for their Router devices >>>ROMMON是思科设备的引导加载程序while U-boot is a ...
- Mac 系统添加右键功能菜单--新建 office,文档等
Mac 系统自带右键功能键比较少,可以添加服务来拓展功能项.例如 Windows 系统右键可以新建 Word 文档,Excel 工作表等,Mac 默认没有,需要进行设置添加. 首先 F4 键进入 La ...
- 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
使用方法: private static ExecutorService cachedThreadPool = new ThreadPoolExecutor(4, Runtime.getRuntime ...
- js中字符串转json对象时报错: Uncaught SyntaxError: Unexpected token s in JSON at position 2
解决方法: js中获取jsp的返回值 var json='${channels}' var channels = JSON.parse(json);就报上面的错. json的值最终会转成这种json格 ...