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

yizhihongxing

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

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日

相关文章

  • 强制显示、隐藏(IE\Mozilla)浏览器的滚动条实现代码

    强制显示或隐藏浏览器滚动条是网页制作中经常使用的技巧之一。下面我们就来详细讲解如何实现该功能。 方法一:使用CSS样式来控制滚动条 使用CSS样式可以对滚动条进行样式定制,并且可以通过设置overflow属性来控制是否显示滚动条。 隐藏滚动条 要隐藏滚动条,可以将body、html标签的overflow属性设置为hidden: body, html { ov…

    css 2023年6月10日
    00
  • jquery实现隐藏在左侧的弹性弹出菜单效果

    针对这个问题,我将会介绍一下利用jQuery实现隐藏在左侧的弹性弹出菜单效果的完整攻略。攻略大致可以分为以下几个步骤: 一、准备工作 开发者需要分析需求,确定弹性弹出菜单的设计和样式。大致思路如下: 一开始菜单处于隐藏状态,可以使用 CSS 来控制。 当用户点击菜单按钮时,菜单可以使用 jQuery 的动画效果弹出。 示例代码: <div class=…

    css 2023年6月11日
    00
  • 使用纯 CSS 创作一个渐变色动画边框

    使用纯 CSS 创作一个渐变色动画边框,通常需要遵循以下步骤: Step 1:创建 HTML 元素 首先,在 HTML 中创建一个元素,该元素将作为动画边框的容器,如下所示: <div class="border-container"></div> Step 2:添加样式 接下来,在 CSS 中添加一些样式,为动画…

    css 2023年6月10日
    00
  • JavaScript实现音乐导航效果

    JavaScript实现音乐导航效果,可以分为以下步骤: 1. HTML 结构 首先需要准备一个包含音乐链接和对应导航按钮的 HTML 结构,如下所示: <ul id="musicList"> <li> <a href="music1.mp3">Music 1</a> &…

    css 2023年6月10日
    00
  • 负margin功能介绍及用法总结

    负Margin功能介绍及用法总结 什么是负Margin CSS中,元素之间有一个外边距的概念,用于控制元素与其他元素之间的距离。而负Margin就是指把元素的外边距设置成负数的情况。 为什么要使用负Margin 使用负Margin可以达到以下效果: 改变元素的位置:元素的位置会向左或向上移动,覆盖到其他元素的上面; 增加元素的可点击区域:可以增加链接或按钮的…

    css 2023年6月10日
    00
  • Vscode 基础使用教程大全

    Vscode 基础使用教程大全 简介 本篇文章将详细讲解 Vscode 的基础使用,其中包括以下内容: Vscode 的安装及配置 Vscode 基础操作 Vscode 插件的安装和使用 Vscode 调试功能的使用 Vscode 常用快捷键 安装及配置 想要使用 Vscode,首先需要进行安装。可以通过 Vscode 官网直接下载安装包进行安装。 下载并安…

    css 2023年6月10日
    00
  • python3解析库BeautifulSoup4的安装配置与基本用法

    Python3解析库BeautifulSoup4的安装配置与基本用法 什么是BeautifulSoup4 BeautifulSoup4 是一个 HTML 或 XML 的解析库,可以将复杂的 HTML 或 XML 文档转换成一个树形结构,提供简单的、Python 风格的 API 来遍历文档。它可以解析 HTML 和 XML 标记文档,支持 HTML5 标准,同…

    css 2023年6月10日
    00
  • CSS3过渡transition效果实例介绍

    下面是关于“CSS3过渡transition效果实例介绍”的完整攻略。 基本介绍 CSS3过渡(transition)在前端页面开发中常用于实现动画效果,通过在某些属性值发生变化时,过渡到新属性值从而呈现出平滑的动画效果。通常情况下,我们会使用transition property指明需要过渡的属性、 transition duration指明过渡的时间长度…

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