尝试过body,html加属性overflow:hidden,pc端可以,移动端不行
用$("body").bind("touchmove",function(event){event.preventDefault;//code});取消了body的拖动事件。
恢复这个拖动事件只要$("body").unbind("touchmove");
弹出的遮罩层可以修改为:
{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
然后在弹出层禁用touchmove。
也可以通过禁止冒泡也可以。
有很多方法,常见的
$('body').css({
overflow: 'hidden',
height: $(window).height() + 'px'
})
// 因为body的高度等于了window的高度,所以滚动自然就无法进行了,如果需要滚动了,只需要把高度从style标签上面移除就好了
$('body').css({
overflow: null,
height: null
}) // 删除style中相应的属性
目前我找到的最合适的方法是:判断event.srcElement是否为弹出层的子元素,如果是则不禁用body的默认事件,如果不是则禁用body的默认事件,当然还是会有bug
body
加上position:relative
,在移动端overflow:hidden
就会生效
html, body {
position: relative;
height: 100%;
overflow: hidden;
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
5 回答1.9k 阅读
之前看到的一个解决方法,你看下是否可以:
https://uedsky.com/demo/modal...