jQuery实现弹窗下底部页面禁止滑动效果

下面是详细的攻略:

需求描述

在使用弹窗作为页面交互组件的时候,我们通常需要禁止页面在弹窗打开的过程中滑动。本文将介绍使用 jQuery 实现在弹窗弹出的同时禁止页面的滑动,并在弹窗关闭后恢复页面的滑动。

实现思路

实现这个效果主要分为以下两个步骤:

  1. 在弹窗弹出的时候,为 body 添加一个 overflow: hidden 样式,并记录当前的滚动位置;
  2. 在弹窗关闭的时候,将 bodyoverflow 样式和滚动位置恢复到之前的状态。

实现步骤

第一步:弹出弹窗

在弹窗弹出的时候,我们需要为 body 添加一个 overflow: hidden 样式,并记录当前的滚动位置。具体实现方式如下:

// 获取当前的滚动位置
var scrollTop = $(window).scrollTop();

// 为 body 添加样式,并记录当前滚动位置
$('body').css({
  'overflow': 'hidden',
  'position': 'fixed',
  'top': '-' + scrollTop + 'px',
  'left': '0',
  'right': '0',
  'bottom': '0'
});

第二步:关闭弹窗

在弹窗关闭的时候,我们需要将 bodyoverflow 样式和滚动位置恢复到之前的状态。具体实现方式如下:

// 恢复 body 的样式和滚动位置
$('body').css({
  'overflow': '',
  'position': '',
  'top': '',
  'left': '',
  'right': '',
  'bottom': ''
});
$(window).scrollTop(scrollTop);

示例说明

下面是两个示例,分别演示了如何在弹窗弹出的时候禁止页面滑动,并在弹窗关闭后恢复页面滑动。

示例一:通过点击按钮弹出弹窗

<button id="open-dialog">打开弹窗</button>
<div id="dialog" style="display:none;">这是一个弹窗</div>
$(function() {
  // 记录当前的滚动位置
  var scrollTop = 0;
  // 点击按钮打开弹窗
  $('#open-dialog').click(function() {
    // 获取当前的滚动位置
    scrollTop = $(window).scrollTop();
    // 为 body 添加样式,禁止滑动
    $('body').css({
      'overflow': 'hidden',
      'position': 'fixed',
      'top': '-' + scrollTop + 'px',
      'left': '0',
      'right': '0',
      'bottom': '0'
    });
    // 显示弹窗
    $('#dialog').show();
  });

  // 关闭弹窗
  $('#dialog').click(function() {
    // 隐藏弹窗
    $(this).hide();
    // 恢复 body 的样式和滚动位置
    $('body').css({
      'overflow': '',
      'position': '',
      'top': '',
      'left': '',
      'right': '',
      'bottom': ''
    });
    $(window).scrollTop(scrollTop);
  });
});

示例二:通过滚动页面触发弹窗

<div id="scroll-container">
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一段文字</p>
  <p>这是一个按钮,点击它会弹出一个弹窗</p>
  <button id="open-dialog">打开弹窗</button>
</div>
<div id="dialog" style="display:none;">这是一个弹窗</div>
$(function() {
  // 记录当前的滚动位置
  var scrollTop = 0;
  // 监听页面滚动事件
  $(window).scroll(function() {
    // 如果页面滚动到了一定位置,就弹出弹窗
    if($(this).scrollTop() > 200) {
      // 获取当前的滚动位置
      scrollTop = $(window).scrollTop();
      // 为 body 添加样式,禁止滑动
      $('body').css({
        'overflow': 'hidden',
        'position': 'fixed',
        'top': '-' + scrollTop + 'px',
        'left': '0',
        'right': '0',
        'bottom': '0'
      });
      // 显示弹窗
      $('#dialog').show();
    }
  });

  // 关闭弹窗
  $('#dialog').click(function() {
    // 隐藏弹窗
    $(this).hide();
    // 恢复 body 的样式和滚动位置
    $('body').css({
      'overflow': '',
      'position': '',
      'top': '',
      'left': '',
      'right': '',
      'bottom': ''
    });
    $(window).scrollTop(scrollTop);
  });
});

结束

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jQuery实现弹窗下底部页面禁止滑动效果 - Python技术站

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

相关文章

  • 详解Bootstrap 学习(一)入门

    详解Bootstrap 学习(一)入门 Bootstrap是一个流行的前端框架之一,能够提高网页开发的效率,本篇文章将带领初学者入门Bootstrap。 第一步:下载并引入Bootstrap 我们可以前往Bootstrap官网下载文件,也可以使用CDN链接引入。 <!– 引入CDN链接 –> <link rel="styles…

    css 2023年6月10日
    00
  • jquery sortable的拖动方法示例详解

    jQuery Sortable 拖动方法示例详解 jQuery Sortable 是一款基于 jQuery 的可拖拽列表插件,它可以轻松实现列表元素的拖动排序。下面我将详细讲解该插件的使用方法,帮助您轻松实现排序效果。 步骤1:引入jQuery Sortable 插件 在网页中引入 jQuery 和 jQuery Sortable 插件的 js 文件,示例如…

    css 2023年6月10日
    00
  • jQuery幻灯片插件owlcarousel参数说明中文文档

    下面是详细讲解“jQuery幻灯片插件owlcarousel参数说明中文文档”的完整攻略: 什么是jQuery幻灯片插件owlcarousel? jQuery幻灯片插件owlcarousel是一款轻量级的jQuery插件,用于创建漂亮、干净、响应式的图片幻灯片展示页面。owlcarousel支持自动播放、响应式布局、无缝轮播、导航等功能,并且提供众多参数方便…

    css 2023年6月9日
    00
  • 详解使用CSS固定页面背景图片位置的方法

    下面是“详解使用CSS固定页面背景图片位置的方法”的完整攻略: 1. 确认需要固定的背景图片 首先需要确认需求中需要固定的背景图片是哪一张,也就是需要在CSS代码中设置背景图片的url路径,例如: body { background-image: url("path/to/background.jpg"); } 2. 使用CSS属性bac…

    css 2023年6月9日
    00
  • Vue入门学习笔记【基本概念、对象、过滤器、指令等】

    下面是Vue入门学习笔记的完整攻略: Vue.js 基本概念 Vue.js 是一个开源的前端 JavaScript 框架,用于构建用户界面,包括单页面应用程序(SPA)和可复用的 UI 组件。 Vue 的特点: 响应式数据绑定:Vue 内部维护着一个”响应式系统”,当数据发生变化时,依赖这些数据的视图会自动更新。 组件化:Vue 允许开发者将应用程序划分为一…

    css 2023年6月10日
    00
  • javascript关于运动的各种问题经典总结

    关于”javascript关于运动的各种问题经典总结”,我可以为你提供一份完整攻略,以下是具体内容: 一、运动的基本概念 运动是指物体在空间中沿着某条路径移动的过程,而在Web前端开发中,我们通常使用JavaScript来实现运动效果。 二、运动效果实现的方式 在Web前端开发中,我们有多种方式可以实现运动效果,其中包括: 1. 通过修改CSS样式来实现 这…

    css 2023年6月10日
    00
  • 12个CSS高级技巧汇总

    12个CSS高级技巧汇总 1. 使用object-fit调整图片大小 object-fit是一个CSS属性,它可以帮助我们调整图片的大小并适应父元素的大小。比如,我们可以将一个宽高比与父元素不同的图片,通过object-fit: cover属性来实现填充整个父元素,并裁剪掉多余部分。 img { width: 100%; height: 200px; obj…

    css 2023年6月9日
    00
  • 利用JavaScript实现静态图片局部流动效果

    实现静态图片局部流动效果可以通过JavaScript操纵DOM元素,实现动态的CSS属性变化来实现。以下是完整攻略: 步骤一:在HTML中添加图片 首先,需要在HTML代码中添加图片的元素。可以使用<img>标签来添加图片,例如: <img src="example.jpg" alt="Example Imag…

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