移动端下弹框禁止背景滑动

移动端下弹框禁止背景滑动

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

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

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代码微多

原文地址:https://segmentfault.com/a/1190000016820135

原文地址:https://www.cnblogs.com/lalalagq/p/9901546.html

时间: 2024-08-28 06:57:51

移动端下弹框禁止背景滑动的相关文章

android-theme中修改actionmode中more下拉框的背景颜色

今天在做图库修改是,需要修改图库的actionbar某个按钮弹出来的下拉框的背景颜色,在网上找了个方法尝试下,没有打到自己的要求,不过阴差阳错的却修改了more下拉框的背景,再次记录下,也许以后能用的到. 代码 <style name="Theme.FunuiGallery" parent="android:Theme.Funui"> <item name="listPreferredItemHeightSmall">48

下拉框禁止编辑权限

1.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C

IOS UIAlertController 弹框 (ios 9.0 后代替了UIAlertView弹框 和 UIActionSheet下弹框)

在IOS 9.0 后 苹果官方宣布不再或不推荐使用UIAlertView 和 UIActionSheet 由UIAlertController进行代替两者 用控制器将两者合二为一 很简单 方便 下面就是关于UIAlertView的常用方法 #import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (void)viewDidLoad {

移动端 弹框下边的内容 禁止滑动的解决方案

移动端 当弹框出现的时候,让弹框下边的内容不能做点击.滑动等操作. 需要将body和html都设置(只设置任何一个,不管事): $("body").css({"height": "100%","overflow":"hidden"}); $("html").css({"height": "100%","overflow":&qu

实现网页弹出框后背景不能滑动的效果

我们经常写遮罩层弹出框之类的效果,但是小编最近发现弹出框出现后,它覆盖的背景内容信息却可以滑动,体验很不好,那么如何禁止背景滑动 很简单的属性 弹出框出现后将body设为hidden document.body.style.overflow = "hidden"; 当关闭弹出框的时候body设为auto document.body.style.overflow = "hidden"; 这样就可以实现效果了,一般都是动态添加根据你的事件需求设置body的overflo

2019如何刷百度电脑下拉框?

如何刷百度下拉框? 巧推网业务主要是快速排名和下拉框排名,今天小编给大家说说百度下拉框排名是怎么刷,以及效果如何?下面先看看我们给自己刷的几个案例: 以上是2个百度电脑端下拉框案例,我们可以看到其构成是“主关键词”+后缀副词:比如“企业排名优化”是主词,“巧推网”就是后缀词,我们在刷词的时候,后缀一般都是我们的品牌词.这样用户点击这个下拉词的时候,就会匹配到我们官网信息,从而起到引流的作用. 不仅如此,即时用户没有点击进来,也起到了增加我们品牌词曝光率. 刷下拉词的大概原理就是系统模仿用户的搜索

vue移动端弹框组件

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 // 当前最新版本 1.2.0  npm install vue-layer-mobile // 如新版遇到问题可回退旧版本  npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf,eto,svg

vue移动端弹框组件的实例

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 ? 1 2 3 4 // 当前最新版本 1.2.0 npm install vue-layer-mobile // 如新版遇到问题可回退旧版本 npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf

vue移动端弹框组件,vue-layer-mobile

最近做一个移动端项目,弹框写的比较麻烦,查找资料,找到了这个组件,但是说明文档比较少,自己研究了下,把我碰到的错,和详细用法分享给大家!有疑问可以打开组件看一看,这个组件是仿layer-mobile的,很多用法都一样,可以看看哦! 一.npm 安装 // 当前最新版本 1.2.0  npm install vue-layer-mobile // 如新版遇到问题可回退旧版本  npm install [email protected] 二.调整配置:因为这个组件中有woff,ttf,eto,svg