最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

移动端下弹框禁止背景滑动的实现方法介绍(附代码)

来源:动视网 责编:小采 时间:2020-11-02 22:12:12
文档

移动端下弹框禁止背景滑动的实现方法介绍(附代码)

移动端下弹框禁止背景滑动的实现方法介绍(附代码):本篇文章给大家带来的内容是关于移动端下弹框禁止背景滑动的实现方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。茴字写法有很多种,找到最适合的才是好的。以下下方法在一屛之内是可行的body;html 设置overflow:
推荐度:
导读移动端下弹框禁止背景滑动的实现方法介绍(附代码):本篇文章给大家带来的内容是关于移动端下弹框禁止背景滑动的实现方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。茴字写法有很多种,找到最适合的才是好的。以下下方法在一屛之内是可行的body;html 设置overflow:


本篇文章给大家带来的内容是关于移动端下弹框禁止背景滑动的实现方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

茴字写法有很多种,找到最适合的才是好的。

以下下方法在一屛之内是可行的

body;html 设置overflow:hidden

.overflow-hidden{
 height: 100%;
 overflow: hidden;
}

// 弹出时
$('html, body,.page').addClass('overflow-hidden');

// 隐藏时
$('html, body,.page').removeClass('overflow-hidden');

问题

当body内容超出一屛时,弹框背景页面会自动滚动到顶部,无法回到原来弹框所在的位置

保存scrollTop,再设置scrollTo

var top = $(window).scrollTop();
// 弹出时
$("body .page").css({
 "position": "fixed",
 "top": -top,
 "left": 0, 
 "right": 0, 
 "bottom": 0
}),

// 隐藏式
$("body .page").css({
 "position": "static"
});
$("html").css({
 "scroll-behavior": "unset"
});
$(window).scrollTop(top),
$("html").css({
 "scroll-behavior": "smooth"
});

问题

当body内容超出一屛时,弹框背景页面会自动滚动到顶部,无法回到原来弹框所在的位置

页面发生了 top 和页面滚动;页面会有闪烁的情况

绑定touchmove事件,然后调用preventDefault()

function preventDefaultFn(event){
 event.preventDefault();
}

// 弹出时 遮罩层
$('.modal-overlay').on('touchmove', preventDefaultFn);

// 隐藏时 遮罩层
$('.modal-overlay').off('touchmove', preventDefaultFn);

问题

弹框中还有滚动的内容,滚动内容也无法滚动

解决

给弹框内需滚动的元素添加标记,在判断是否执行event.preventDefault();

给main元素添加position:absolute(推荐)

.page {
 /* main绝对定位,进行内部滚动 */
 position: absolute;
 top: 0;
 bottom: 0;
 right:0;
 left:0;
 /* 使之可以滚动 */
 overflow-y: scroll;
 /* 增加该属性,可以增加弹性 */
 -webkit-overflow-scrolling: touch;
}
.overflow-hidden{
 overflow: hidden;
}
// 弹出时
$('.page').addClass('overflow-hidden');
// 隐藏时
$('.page').removeClass('overflow-hidden');
<div class="page">
 <!-- 内容在这里... -->
</div>

优点

没有上述这些问题

随带解决了ios fixed 的相关bug

缺点

需要改页面结构

css代码微多

文档

移动端下弹框禁止背景滑动的实现方法介绍(附代码)

移动端下弹框禁止背景滑动的实现方法介绍(附代码):本篇文章给大家带来的内容是关于移动端下弹框禁止背景滑动的实现方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。茴字写法有很多种,找到最适合的才是好的。以下下方法在一屛之内是可行的body;html 设置overflow:
推荐度:
标签: 背景 的方法 禁止
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top