小程序显示弹窗时禁止下层的内容滚动实现方法

要禁止下层的内容滚动,我们可以通过以下步骤实现:

1. 给body元素添加样式

我们可以给 <body> 元素添加样式来实现下层内容的禁止滚动。将下面的样式代码添加到你页面的CSS文件或页面内嵌的style标签中。

body.modal-open {
  overflow: hidden;
}

这将将窗口的滚动条隐藏,并禁止滚动。

2. JS代码

为了在弹窗打开时添加样式,我们需要一些 JavaScript 代码。这里以jQuery为例:

$(document).ready(function(){
  $('.modal').on('show.bs.modal', function (event) {
    $('body').addClass('modal-open');
  });

  $('.modal').on('hide.bs.modal', function (event) {
    $('body').removeClass('modal-open');
  });
});

如上代码所示,当弹窗显示时(即 'show.bs.modal' 事件被触发),将 modal-open 类添加到 <body> 元素。隐藏弹窗时(即 'hide.bs.modal' 事件被触发),将 modal-open 类从 <body> 元素移除。这将启用和禁用我们在第1步中添加的样式。

示例一

以下是一个使用Bootstrap框架的实例。假设我们有一个按钮,点击后弹出窗口。我们使用Bootstrap的模态框(Modal)组件实现窗口弹出。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Bootstrap Modal Example</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
  <style>
    body.modal-open {
      overflow: hidden;
    }
  </style>
</head>
<body>
  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
    Launch demo modal
  </button>

  <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>
        <div class="modal-body">
          <p>Modal body text goes here.</p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          <button type="button" class="btn btn-primary">Save changes</button>
        </div>
      </div>
    </div>
  </div>

  <script>
    $(document).ready(function(){
      $('.modal').on('show.bs.modal', function (event) {
        $('body').addClass('modal-open');
      });

      $('.modal').on('hide.bs.modal', function (event) {
        $('body').removeClass('modal-open');
      });
    });
  </script>
</body>
</html>

当我们点击按钮时,模态框将弹出。此时窗口下面的滚动将被禁止,并隐藏滚动条。

示例二

以下示例展示了一个自定义的弹窗。我们通过手写HTML和CSS创建了样式,通过JavaScript代码将其绑定到触发器上。

<!DOCTYPE html>
<html>
<head>
  <meta charset='utf-8'>
  <title>Disable Background Scroll when opening a modal</title>
  <style>
    body.modal-open {
      overflow: hidden;
    }
    .modal-overlay {
      display: none;
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background-color: rgba(0, 0, 0, 0.5);
      z-index: 999;
    }
    .modal-wrapper {
      display: none;
      position: fixed;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background-color: #fff;
      width: 50%;
      padding: 30px;
      box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
      z-index: 9999;
    }
  </style>
</head>
<body>
  <button id="open-modal">Open Modal</button>

  <div class="modal-overlay"></div>
  <div class="modal-wrapper">
    <h2>Modal Title</h2>
    <p>Modal Content goes here...</p>
    <button id="close-modal">Close Modal</button>
  </div>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
  <script>
    $(document).ready(function(){
      $('#open-modal').on('click', function() {
        $('.modal-overlay, .modal-wrapper').fadeIn();
        $('body').addClass('modal-open');
      });

      $('#close-modal, .modal-overlay').on('click', function() {
        $('.modal-overlay, .modal-wrapper').fadeOut();
        $('body').removeClass('modal-open');
      });
    });
  </script>
</body>
</html>

我们的自定义弹窗将于页面加载时隐藏。当我们点击 "Open Modal" 按钮时,弹窗将显示。此时窗口下面的滚动将被禁止,并隐藏滚动条。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小程序显示弹窗时禁止下层的内容滚动实现方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • javascript设置页面背景色及背景图片的方法

    首先我们来学习如何使用JavaScript设置页面的背景色。 设置背景色 步骤1: 定义HTML文件,我们需要先定义一个HTML文件,例如这里的index.html文件。 <!DOCTYPE html> <html> <head> <title>JavaScript设置页面背景色</title> &…

    css 2023年6月9日
    00
  • CSS通过RGBa将一个元素设置为透明效果

    要将一个元素设置为透明效果,可以使用CSS中的RGBa(RGBA)。RGBa允许我们为颜色添加一个alpha通道,这意味着我们可以控制颜色的透明度。下面是RGBa的语法: rgba(red, green, blue, alpha) 其中,red、green和blue通过0到255之间的整数值定义颜色,而alpha是设置透明度的参数,取值范围从0到1。 我们可…

    css 2023年6月13日
    00
  • 前端开发工程师和美工对于网站开发所掌握的知识的区别

    前端开发工程师和美工在网站开发中扮演的角色不同,因此他们所掌握的知识也有所区别。 前端开发工程师 岗位职责 前端开发工程师负责制作网站的前端页面效果,在网站前端开发过程中,需要掌握 HTML、CSS、JavaScript 等技术,能够开发响应式网站,并与后端工程师协作,实现网站的页面交互效果。 相关技能 HTML技能:熟悉基本的HTML5语法,并能够熟练使用…

    css 2023年6月10日
    00
  • vue中配置mint-ui报css错误问题的解决方法

    问题描述: 在Vue项目中配置Mint UI,import相应的组件后,页面渲染时出现报错,显示缺少相关的CSS文件。 问题原因: 可能是因为在Webpack配置中对CSS进行了特殊处理,导致Mint UI默认的样式文件未能被正确加载。另外,Mint UI依赖于样式文件的引入,如果缺失了相关的CSS文件,会导致组件无法正常使用并报错。 解决方案: 安装相应的…

    css 2023年6月10日
    00
  • 三剑客:offset、client和scroll还傻傻分不清?

    当我们在页面布局时,经常需要用到三个CSS属性:offset、client和scroll,它们被称为“三剑客”,但是它们的区别常常被人误解。接下来我们详细讲解它们的区别及使用情况。 offset offset指的是当前元素在整个页面文档中的位置,它包含四个值:offsetTop、offsetLeft、offsetWidth和offsetHeight。 off…

    css 2023年6月10日
    00
  • Ext修改GridPanel数据和字体颜色、css属性等

    下面我将给出关于“Ext修改GridPanel数据和字体颜色、css属性等”的完整攻略,希望对您有所帮助。 一、修改GridPanel数据 1.1 修改GridPanel中单元格数据 GridPanel中单元格数据的修改可以使用setData方法,该方法用于修改单元格中对应字段的值。示例代码如下: // 创建GridPanel实例 var gridPanel…

    css 2023年6月9日
    00
  • HTML中css和js链接中的版本号(刷新缓存)

    在HTML中,我们通常使用link标签和script标签链接CSS文件和JS文件。在项目开发中,我们可能会经常修改CSS或JS文件内容,但是浏览器会默认缓存这些文件,导致新的修改可能无法立即生效。这时,我们可以在链接CSS和JS文件时增加版本号参数,从而强制浏览器重新加载文件,达到刷新缓存的效果。 下面是具体步骤: 在CSS或JS文件名称后面加入版本号参数 …

    css 2023年6月10日
    00
  • CSS实现文字环绕图片效果

    下面就是CSS实现文字环绕图片效果的完整攻略,分为以下几个步骤: 1.准备工作 首先,在HTML文档中添加一张图片和一段文本。例如: <img src="example.jpg" alt="Example Image"> <p>Lorem ipsum dolor sit amet, consec…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部