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日

相关文章

  • js实现瀑布流的三种方式比较

    下面我将详细讲解“js实现瀑布流的三种方式比较”的完整攻略。 什么是瀑布流布局 瀑布流布局是一种常见的网页布局方式,主要特点是把内容块按照一定的规则摆放在页面上,使页面看起来像瀑布流一般自然流畅。 三种实现瀑布流的方式 第一种:通过CSS实现瀑布流 这种方式利用CSS3的column属性实现布局。首先将要布局的元素放进一个容器中,并将容器的column-co…

    css 2023年6月10日
    00
  • js原生瀑布流插件制作

    下面我将详细讲解制作 JavaScript 原生瀑布流插件的攻略。 1. 瀑布流布局 瀑布流布局是一种常见的网页布局形式,它的主要特点是多列等宽的布局,每一列中的元素高度可以不同,元素按顺序从上到下排列。这种布局形式可以很好地展示图片、文章等内容。 实现瀑布流布局的方式有很多种,其中一种常见的方式是使用 JavaScript 代码动态计算元素的位置和大小。下…

    css 2023年6月9日
    00
  • 小影怎么删除视频?小影app删除我发布的视频方法介绍

    小影怎么删除视频?小影app删除我发布的视频方法介绍 如果您想删除在小影app中发布的视频,可以按照以下步骤操作: 打开小影app并登录您的账户,进入主页。 点击主页下方的“我的”选项,进入个人中心页面。 在个人中心页面中,您可以看到发布的视频列表。选中您想要删除的视频,点击视频下方的删除按钮。 在弹出的提示框中,确认删除操作。 删除成功后,该视频将不再在小…

    css 2023年6月11日
    00
  • 使用CSS3制作饼状旋转载入效果的实例

    使用 CSS3 制作饼状旋转载入效果的实例,可以通过以下步骤实现: 创建 HTML 结构 首先,需要创建一个 HTML 结构,包含一个 div 元素作为载入效果的容器,以及一个 span 元素作为载入效果的饼状图。 <div class="loader"> <span></span> </div&…

    css 2023年5月18日
    00
  • 一个jquery实现的不错的多行文字图片滚动效果

    实现多行文字图片滚动效果,可以使用jQuery库提供的方法。下面是实现过程的完整攻略。 步骤一:引入jQuery库和插件文件 在HTML头部,引入jQuery库和插件文件。插件文件可以从GitHub等源代码托管网站上下载获取。 <head> <script src="https://code.jquery.com/jquery-3…

    css 2023年6月10日
    00
  • python中PyQuery库用法分享

    Python中PyQuery库用法分享 前言 PyQuery是一个类似jQuery的Python库,它能够非常方便地对HTML或XML文档进行解析和操作。本篇攻略将详细讲解PyQuery库的使用方法。 安装方法 PyQuery可以通过pip安装,命令如下: pip install pyquery 基本使用方式 假设我们要解析如下HTML代码: <htm…

    css 2023年6月9日
    00
  • 好用的VSCode头部注释插件Fileheader Pro

    好用的VSCode头部注释插件Fileheader Pro是一个便捷的工具,可以自动为代码文件添加头部注释,提高代码可读性,下面将详细讲解如何使用。 安装 在VSCode插件市场搜索“Fileheader Pro”,点击安装即可。 或者通过以下命令行安装: code –install-extension chenxsan.vscode-fileheader…

    css 2023年6月9日
    00
  • ahooks useInfiniteScroll源码解析

    就ahooks库中的useInfiniteScroll钩子进行源码分析的过程,我总结了以下完整攻略: 理解useInfiniteScroll的作用 useInfiniteScroll是ahooks库中提供的一个自定义Hooks,可以帮助前端程序员快速实现无限滚动的效果。当用户滚动到页面底部时,自动加载更多数据,从而避免了手动分页加载的繁琐操作。 步骤一:从G…

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