jquery弹窗时禁止body滚动条滚动的例子

请参考以下攻略,包含两个示例说明。

攻略

当使用jQuery弹出框或模态框时,为了确保用户集中精力处理弹出框中的信息,我们通常要禁止页面的滚动。

一种简单的解决方法是通过禁止body元素的滚动来实现。我们可以使用CSS和JavaScript来实现这一目的。

示例如下:

1. CSS方式:

/* 禁止body元素滚动 */ 
body.modal-open {
    overflow: hidden;
    position: fixed;
    width: 100%;
}

但是,如果没有触发条件,这段CSS无效。我们需要在JavaScript中切换“modal-open”类来实现这一目的。

2. JavaScript方式:

我们可以在打开模态框时添加CSS类,关闭时则删除。示例代码如下:

// 打开模态框时
$('myModal').on('show.bs.modal', function () {
    $('body').addClass('modal-open');
});

// 关闭模态框时
$('myModal').on('hidden.bs.modal', function () {
    $('body').removeClass('modal-open');
});

上述代码中,‘show.bs.modal’和‘hidden.bs.modal’是Bootstrap模态框的事件钩子,分别在模态框显示和隐藏时触发。

示例说明

假设我们有一个网站,包含一个回到顶部按钮。用户点击该按钮后,弹出一个询问窗口,询问用户是否确认返回顶部操作。当弹窗显示时,我们需要禁止页面滚动。

以下是一个示例代码:

<!-- HTML代码 -->
<button id="back-to-top">回到顶部</button>

<div id="confirm-modal" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                <p>确认返回顶部吗?</p>
            </div>
            <div class="modal-footer">
                <button id="confirm-btn" type="button" class="btn btn-primary">确认</button>
                <button id="cancel-btn" type="button" class="btn btn-default" data-dismiss="modal">取消</button>
            </div>
        </div>
    </div>
</div>
// JavaScript代码
$(function () {
    // 回到顶部按钮点击事件
    $('#back-to-top').click(function () {
        // 显示确认窗口
        $('#confirm-modal').modal('show');
        // 禁止页面滚动
        $('body').addClass('modal-open');
    });

    // 确认按钮点击事件
    $('#confirm-btn').click(function () {
        // 隐藏确认窗口
        $('#confirm-modal').modal('hide');
        // 取消禁止页面滚动
        $('body').removeClass('modal-open');
        // 返回顶部
        $('html, body').animate({ scrollTop: 0 }, 'fast');
    });

    // 取消按钮点击事件
    $('#cancel-btn').click(function () {
        // 隐藏确认窗口
        $('#confirm-modal').modal('hide');
        // 取消禁止页面滚动
        $('body').removeClass('modal-open');
    });
});

以上代码中,我们首先在回到顶部按钮的点击事件中,显示弹出框并禁止页面滚动。然后在确认或取消按钮的点击事件中,隐藏弹出框并恢复页面滚动。

另外一个示例中,我们有一个照片展示网站,当用户点击照片时,会弹出一个大图展示。与上面的示例类似,当弹出窗口显示时,我们需要禁止页面滚动。

以下是一个示例代码:

<!-- HTML代码 -->
<div class="photo-gallery">
    <img src="photo1.jpg" alt="照片1" data-toggle="modal" data-target="#photo-modal">
    <img src="photo2.jpg" alt="照片2" data-toggle="modal" data-target="#photo-modal">
    <img src="photo3.jpg" alt="照片3" data-toggle="modal" data-target="#photo-modal">
    <img src="photo4.jpg" alt="照片4" data-toggle="modal" data-target="#photo-modal">
    <!-- 省略其它照片 -->
</div>

<div id="photo-modal" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-body">
                <img src="photo1.jpg" alt="照片1">
            </div>
            <div class="modal-footer">
                <button id="close-btn" type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            </div>
        </div>
    </div>
</div>
// JavaScript代码
$(function () {
    // 点击照片时
    $('.photo-gallery img').click(function () {
        // 获取照片的地址
        var src = $(this).attr('src');
        // 设置弹出窗口中的照片地址
        $('#photo-modal img').attr('src', src);
        // 显示弹出窗口
        $('#photo-modal').modal('show');
        // 禁止页面滚动
        $('body').addClass('modal-open');
    });

    // 关闭按钮点击事件
    $('#close-btn').click(function () {
        // 隐藏弹出窗口
        $('#photo-modal').modal('hide');
        // 取消禁止页面滚动
        $('body').removeClass('modal-open');
    });
});

以上代码中,我们在照片的点击事件中,从点击的img元素中获取照片地址并设置弹出窗口中的照片地址。然后显示弹出窗口并禁止页面滚动。在关闭按钮的点击事件中,隐藏弹出窗口并取消禁止页面滚动。

这两个示例说明了如何使用jQuery实现弹窗时禁止页面滚动的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery弹窗时禁止body滚动条滚动的例子 - Python技术站

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

相关文章

  • jQuery拖拽插件gridster使用指南

    jQuery拖拽插件gridster使用指南 简介 gridster是一个优秀的jQuery拖拽插件,可以帮助用户快速实现可拖拽、可排序的网格布局。本文将对gridster的使用进行详细介绍。 安装 使用gridster之前,需要引入jquery和gridster的javascript文件和css文件,可以直接从官方网站下载或使用npm等包管理工具安装,在H…

    css 2023年6月9日
    00
  • 了解了这些才能开始发挥jQuery的威力

    了解了这些才能开始发挥jQuery的威力 jQuery是一款非常流行的JavaScript库,它极大地简化了JavaScript的编写。如果您要开始使用jQuery,请确保您已经掌握以下几个主要概念。 选择器 选择器允许您选择页面上的一个或者多个元素。其中,大部分选择器都是基于CSS选择器的,因此如果您已经了解过CSS选择器,那么理解选择器的工作原理应该很容…

    css 2023年6月9日
    00
  • javascrip高级前端开发常用的几个API示例详解

    JavaScript 高级前端开发常用的几个 API 示例详解 在 JavaScript 高级前端开发中,经常会用到一些常见的 API。以下是其中一些 API 的示例及详解: 1. setTimeout() setTimeout() 函数用于在指定的毫秒数后执行一次函数。它的一般语法为: setTimeout(function, milliseconds);…

    css 2023年6月10日
    00
  • 第一章之初识Bootstrap

    第一章:初识Bootstrap Bootstrap是一个免费开源的前端框架,可帮助开发者构建漂亮、响应式的网站、应用程序和移动设备应用程序。下面将详细介绍Bootstrap的基础知识。 1.1 下载Bootstrap Bootstrap可以从官方网站 https://getbootstrap.com/下载。我们可以选择下载编译好的CSS和JavaScript…

    css 2023年6月11日
    00
  • css中间自适应布局的5种解法详解

    在CSS中,实现中间自适应布局是一种常见的需求。以下是五种实现中间自适应布局的方法,包括两个示例说明: 1. 使用flexbox布局 使用flexbox布局是一种简单的方法,可以实现中间自适应布局。可以将左侧和右侧的元素设置为固定宽度,将中间的元素设置为flex-grow属性,以填充剩余的空间。例如: <div class="containe…

    css 2023年5月18日
    00
  • 前端性能优化及技巧

    前端性能优化旨在提高网页的用户体验,缩短网页的加载时间,减少资源的请求和使用。下面是前端性能优化的一些技巧和方法: 1. 减少HTTP请求 在页面中引入的CSS、JavaScript、图片等资源,每个资源都需要向服务器发送一次请求,因此每个请求都会消耗时间,增加页面的加载时间。减少HTTP请求是一种有效的提高性能的方法。 将多个CSS文件合并为一个文件,在H…

    css 2023年6月10日
    00
  • 举例讲解jQuery中可见性过滤选择器的使用

    我们来详细讲解一下jQuery中可见性过滤选择器的使用攻略。 一、可见性过滤选择器介绍 可见性过滤选择器是 jQuery 中的一种用于筛选元素的方法,可以用于查找页面上可见或隐藏的元素。在可见性过滤选择器中提供了若干种方法来进行元素的筛选,如下: :visible (选择所有可见元素) :hidden (选择所有隐藏元素) :focus (选择当前获得焦点的…

    css 2023年6月9日
    00
  • 移动端网站页面调试的一些经验分享

    下面我将详细讲解“移动端网站页面调试的一些经验分享”的完整攻略。 1. 准备工作 在移动端网站页面调试之前,需要做一些准备工作,包括: 确保开发工具具备模拟移动设备功能; 确认移动设备开启调试模式,并通过USB连接设备与电脑; 在开发工具上打开调试工具。 2. 移动端页面调试方法 在保证准备工作完成之后,我们可以开始移动端页面调试。以下是一些常见的调试方法:…

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