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

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

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日

相关文章

  • WordPress菜单CSS类选项设置方法

    下面我来为您详细讲解“WordPress菜单CSS类选项设置方法”的完整攻略。 一、什么是WordPress菜单CSS类选项? 在WordPress中,可以通过菜单功能来管理和展示站点的各个导航链接。而CSS(Cascading Style Sheets)类则是用来设置菜单选项之间的样式和效果。通过在菜单选项中添加CSS类,可以实现自定义菜单样式的目的。 二…

    css 2023年6月10日
    00
  • CSS经典技巧十则

    “CSS经典技巧十则”收录了多种经典的CSS技巧,对于Web前端开发者来说非常有用。下面将对这些技巧进行详细的讲解。 技巧一:实现垂直居中的三种方法 在CSS中,实现垂直居中一直是一个难点。这里介绍三种常用的方法: 方法一:使用table-cell .container { display: table; height: 200px; width: 200p…

    css 2023年6月9日
    00
  • button在IE6/7下的黑边去除方案

    针对IE6/7下的黑边问题,可以采取以下方案进行处理: 1.使用CSS hack方式解决在标签中添加属性“overflow:hidden;zoom:1;”,其中“zoom:1”是使IE6/7下的layout引擎生效,同时“overflow:hidden”是为了隐藏不需要显示的部分,从而达到去除黑边的效果。 示例1: <button style=&quo…

    css 2023年6月10日
    00
  • 使用Vue 控制元素显示隐藏的方法和区别

    使用Vue.js可以很方便地控制元素的显示和隐藏。常用的方法包括使用v-show和v-if指令。虽然这两者都可以实现元素的显示隐藏,但是它们之间还是有一些区别的。 使用v-show指令 v-show指令控制元素的显示和隐藏,主要的区别在于当元素被隐藏时,依然保留它的DOM节点和状态,只是将其样式设置为display: none。因此,当v-show指令切换元…

    css 2023年6月10日
    00
  • HTML标记第1/2页

    HTML标记第1/2页的完整攻略,分为以下几个步骤: 1. 了解HTML基础知识 HTML是网页开发基础语言,全称为超文本标记语言 (Hyper Text Markup Language) HTML标记由尖括号包围的元素 (elements) 构成,常见的元素包括标题 (h1~h6)、段落 (p)、链接 (a)、图片 (img)、列表 (ul/ol) 等等 …

    css 2023年6月10日
    00
  • JavaScript获取元素尺寸和大小操作总结

    JavaScript获取元素尺寸和大小操作总结 在Web开发中,获取元素的尺寸和大小是常见的需求。本文总结了JavaScript如何获取元素尺寸和大小的方法。 1. 基础方法 1.1 offsetWidth 和 offsetHeight offsetWidth 和 offsetHeight 属性是获取元素自身宽度和高度的方法,包括元素的边框、内边距和滚动条在…

    css 2023年6月9日
    00
  • 使用css外部样式表的方法

    以下是“使用CSS外部样式表的方法”的完整攻略: 使用CSS外部样式表的方法 CSS外部样式表是一种将CSS样式定义在外部文件中,然后在HTML文件中引用的方法。这种方法可以使得CSS样式的管理更加方便,同时也可以提高网页的加载速度。以下是使用CSS外部样式表的步骤: 创建CSS文件:在本地计算机上创建一个CSS文件,例如“style.css”。 编写CSS…

    css 2023年5月18日
    00
  • Bootstrap每天必学之导航条

    Bootstrap每天必学之导航条 什么是导航条? 导航条是指用于网站或应用程序的主要导航展示的水平条,通常包含网站的标志、菜单和其他导航链接。 Bootstrap导航条 Bootstrap是一个广泛使用的前端框架,提供了许多基本的UI组件,其中之一就是导航条。使用Bootstrap可以轻松创建具有响应式布局的漂亮的导航条,并使网站风格统一。 创建基本导航条…

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