使用jQuery和CSS实现平滑的鼠标滚轮水平滚动

使用jquery和css实现平滑的鼠标滚轮水平滚动

本文详细介绍了如何利用jQuery和CSS创建平滑的网页水平滚动效果,并通过鼠标滚轮进行控制。我们将探讨关键的CSS布局技巧,如`display: inline-block`和`white-space: nowrap`,以及jQuery中`wheel`事件监听、`transform: translateX`动画和精确的滚动边界控制,以解决传统方法中滚动不流畅和越界的问题,最终实现类似单页应用的用户体验。

网页水平滚动实现:jQuery与CSS实践

在现代网页设计中,为了提供独特的视觉体验或更好地组织内容,水平滚动布局越来越受欢迎。结合鼠标滚轮事件,我们可以实现一种直观且引人入胜的导航方式。本教程将指导您如何使用jQuery和CSS构建一个平滑、受控的水平滚动页面。

1. HTML结构搭建

首先,我们需要一个包含多个内容区域(例如section元素)的容器。这些内容区域将作为水平滚动的单元。为了方便管理,我们将它们包裹在一个父级div中。同时,为了引入jQuery库,我们会在HTML文件的适当位置添加CDN链接。

            平滑水平滚动示例                

第一部分

第二部分

第三部分

第四部分

第五部分

2. CSS样式定义

CSS是实现水平布局和滚动平滑度的关键。我们将通过以下规则来构建我们的界面:

立即学习“前端免费学习笔记(深入)”;

全局样式:移除html和body的默认外边距,并隐藏默认的垂直滚动条,确保我们的自定义滚动机制能够完全控制。内容区域 (section):height: 99vh;:让每个部分占据视口的高度,提供全屏体验。display: inline-block;:使各部分水平排列。width: 33.3%;:示例中每个部分占据视口宽度的三分之一,您可以根据需求调整。overflow: visible;:确保内容不会被裁剪。滚动容器 (.scroll-sections):white-space: nowrap;:防止inline-block元素换行,强制它们在同一行显示。height: 100%;:使其高度与父元素(body)一致。overflow: visible;:允许内容超出其边界,由JavaScript控制可见区域。transition-duration: 0.5s;:这是实现平滑滚动的核心。当transform属性改变时,它会在0.5秒内平滑过渡,而不是瞬间跳跃。

html, body {    margin: 0px;    overflow: hidden; /* 隐藏默认滚动条 */}section {    height: 99vh; /* 每个部分占据视口高度 */    display: inline-block; /* 使各部分水平排列 */    width: 33.3%; /* 示例宽度,可根据需求调整 */    border: 1px solid red; /* 仅为可视化方便 */    overflow: visible;}.scroll-sections {    white-space: nowrap; /* 防止内联块元素换行 */    height: 100%;    overflow: visible;    transition-duration: 0.5s; /* 关键:平滑过渡效果 */}

3. jQuery滚动逻辑

现在,我们来实现鼠标滚轮控制的滚动逻辑。我们将监听wheel事件,并根据滚轮方向调整容器的translateX属性。

$(document).ready(function(){    var pos = 0; // 当前滚动位置的translateX值    var scrollContainer = $(".scroll-sections");    // 计算最大允许的负向滚动值(即最右端)    // totalContentWidth 是所有section的总宽度    var totalContentWidth = 0;    scrollContainer.children().each(function() {        totalContentWidth += $(this).outerWidth(true); // outerWidth(true) 包含外边距    });    var viewportWidth = $(window).width(); // 视口宽度    var maxScroll = viewportWidth - totalContentWidth; // 最大负向translateX值    // 监听鼠标滚轮事件    scrollContainer.on('wheel', function(event) {        // event.originalEvent.wheelDelta: 向上滚动为正值 (通常是120), 向下滚动为负值 (-120)        // 这里除以3是为了让滚动更平滑,您可以根据需要调整速度        pos = pos + (event.originalEvent.wheelDelta / 3);        // 边界检查:防止滚动超出内容区域        if (pos > 0) {            pos = 0; // 限制在起始位置(最左端)        }        if (pos < maxScroll) {            pos = maxScroll; // 限制在结束位置(最右端)        }        // 应用CSS transform属性进行水平位移        // 使用translateX比直接修改left属性性能更好,因为它利用了GPU加速        scrollContainer.css({'transform': 'translateX(' + pos + 'px)'});        // 阻止默认的垂直滚动行为        return false;    });});

4. 注意事项与优化

transform: translateX vs left: 教程中使用了transform: translateX进行位移,而不是直接修改left属性。这是因为transform属性通常由GPU加速,能够提供更流畅的动画效果,尤其是在复杂的页面或低性能设备上。transition-duration: 在CSS中设置transition-duration是实现平滑滚动的关键。没有它,transform的变化将是瞬间完成的,导致生硬的跳跃。边界控制: 精确计算maxScroll并实施pos的边界检查(if (pos > 0)和if (pos 滚动速度: event.originalEvent.wheelDelta / 3中的除数可以调整滚动的灵敏度。数值越大,滚动速度越慢。跨浏览器兼容性: wheel事件是现代浏览器推荐的滚轮事件。对于旧版浏览器,可能需要考虑mousewheel和DOMMouseScroll事件,但jQuery的on(‘wheel’)通常能很好地处理。响应式设计: 示例中的section宽度设置为33.3%,这意味着在任何视口宽度下,始终有3个部分可见。您可以根据需要调整此百分比或使用媒体查询来实现更复杂的响应式布局。内容宽度计算: totalContentWidth的计算使用了outerWidth(true)以确保包含外边距。如果您的section元素有内边距或边框,outerWidth()(不带参数)或width()可能需要根据实际情况调整。

总结

通过上述HTML、CSS和jQuery代码,我们成功实现了一个平滑且受鼠标滚轮控制的水平滚动页面。这种方法不仅解决了传统滚动机制中可能出现的卡顿和

以上就是使用jQuery和CSS实现平滑的鼠标滚轮水平滚动的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1588095.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
深度解析Django URL模式中的尾部斜杠:原理、实践与配置
上一篇 2025年12月23日 03:59:31
Web开发:HTTPS环境下图片显示不一致的混合内容解决方案
下一篇 2025年12月23日 03:59:45

相关推荐

  • sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法

    sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法

    通过管理Sublime Text配置目录并结合云盘或Git实现多设备同步。将Packages目录移至云盘并创建符号链接,或用Git版本化关键配置文件,配合Package Control自动恢复插件,确保各设备设置一致。 Sublime Text 是许多开发者喜爱的轻量级编辑器,跨设备使用时保持配置和…

    2026年9月25日 • 用户投稿
    000
  • 360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程

    360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程

    关闭360极速浏览器热搜和新闻弹窗需三步操作:一、在“设置-实验室-其他设置”中关闭“启用‘360热点资讯’功能”;二、在“隐私设置-网站设置-弹出式窗口”中开启阻止;三、手动点击弹窗上的“不再弹出”选项。 如果您在使用360极速浏览器时频繁遭遇热搜和新闻弹窗干扰,影响正常浏览体验,这通常是因为浏览…

    2026年9月25日 • 用户投稿
    000
  • 怎么用豆包AI帮我优化NumPy运算 3个技巧让AI加速科学计算

    怎么用豆包AI帮我优化NumPy运算 3个技巧让AI加速科学计算怎么用豆包AI帮我优化NumPy运算 3个技巧让AI加速科学计算怎么用豆包AI帮我优化NumPy运算 3个技巧让AI加速科学计算怎么用豆包AI帮我优化NumPy运算 3个技巧让AI加速科学计算

    豆包ai可通过三个技巧优化numpy计算效率。1. 描述逻辑让ai生成高效向量化表达式,如用np.mean(arr * (arr > 0), axis=1)替代循环求每行正数均值;2. 提供现有代码让ai分析瓶颈并提出优化建议,如将显式循环改为np.where(np.sum(arr, axis…

    2026年9月25日 • 用户投稿
    000
  • sublime如何卸载插件 _sublime插件卸载教程

    sublime如何卸载插件 _sublime插件卸载教程sublime如何卸载插件 _sublime插件卸载教程sublime如何卸载插件 _sublime插件卸载教程sublime如何卸载插件 _sublime插件卸载教程

    通过Package Control卸载:打开Sublime Text,调出命令面板,输入Remove Package,选择插件并删除;2. 手动删除:关闭软件后进入Packages目录,删除对应插件文件夹;3. 注意清理User目录下的残留配置文件,避免冗余。操作安全,不影响主程序。 在 Subli…

    2026年9月25日 • 用户投稿
    000
  • 如何配置Debian Apache日志格式

    如何配置Debian Apache日志格式如何配置Debian Apache日志格式如何配置Debian Apache日志格式如何配置Debian Apache日志格式

    本文介绍如何在Debian系统上自定义Apache的日志格式。 以下步骤将指导您完成配置过程: 第一步:访问Apache配置文件 Debian系统的Apache主配置文件通常位于 /etc/apache2/apache2.conf 或 /etc/apache2/httpd.conf。 使用以下命令以…

    2026年9月25日 • 用户投稿
    100
  • Java中整数类型溢出行为详解:二进制补码与循环特性

    Java中整数类型溢出行为详解:二进制补码与循环特性Java中整数类型溢出行为详解:二进制补码与循环特性Java中整数类型溢出行为详解:二进制补码与循环特性Java中整数类型溢出行为详解:二进制补码与循环特性

    Java中原始整数类型在处理超出其范围的数值时,会遵循一种基于二进制补码的循环溢出机制。这意味着当正数溢出时会“回卷”为负数,反之亦然,如同数字在一个有限的圆环上循环。理解这一特性对于准确预测类型转换和算术运算结果至关重要。 计算机中的数值表示:位、字节与二进制 在计算机底层,所有数据都以二进制形式…

    2026年9月25日 • 用户投稿
    000
  • Java数据类型溢出:原理、预测与避免

    Java数据类型溢出:原理、预测与避免Java数据类型溢出:原理、预测与避免Java数据类型溢出:原理、预测与避免Java数据类型溢出:原理、预测与避免

    本文旨在深入解析Java中数据类型溢出的现象,阐述其背后的二进制补码原理,并提供预测溢出结果的方法。通过理解数据在计算机中的存储方式,以及溢出时数值的循环特性,开发者可以更好地掌握Java中的数据类型,避免潜在的错误。 数据在计算机中的存储:二进制补码 计算机底层使用二进制(bits)来表示所有数据…

    2026年9月25日 • 用户投稿
    000
  • AI图片优化修复有哪些 AI图片优化修复工具汇总

    AI图片优化修复有哪些 AI图片优化修复工具汇总AI图片优化修复有哪些 AI图片优化修复工具汇总AI图片优化修复有哪些 AI图片优化修复工具汇总AI图片优化修复有哪些 AI图片优化修复工具汇总

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 吐司AI高清 由吐司AI开发的图像清晰化与修复服务 绘蛙AI高清 绘蛙平台推出的AI图像高清修复功能 稿定AI变清晰 稿定设计提供的AI图像清晰增强处理工具 Facet 用于AI图像修饰和质量提…

    2026年9月25日 • 用户投稿
    000
  • 苹果壁纸设计网页正版访问_苹果壁纸设计网页直达入口

    苹果壁纸设计网页正版访问_苹果壁纸设计网页直达入口苹果壁纸设计网页正版访问_苹果壁纸设计网页直达入口苹果壁纸设计网页正版访问_苹果壁纸设计网页直达入口苹果壁纸设计网页正版访问_苹果壁纸设计网页直达入口

    苹果壁纸设计网页正版访问入口是http://eyu.zaixian-fanyi.com/fan_wei_13269529,该平台提供海量高清壁纸、支持用户上传分享、内置编辑工具并定期更新主题内容,界面简洁流畅,支持一键收藏与多设备同步,同时整合设计模板、贴纸素材与艺术字体,提升创作灵活性。 苹果壁纸…

    2026年9月25日 • 用户投稿
    000
  • 夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程

    夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程

    首先访问夸克官网下载电脑版安装包,运行QuarkSetup.exe完成安装并创建快捷方式,最后启动浏览器登录阿里系账号同步数据并进行个性化设置。 如果您尝试在电脑上使用夸克浏览器,但尚未安装其桌面版本,则需要完成下载与安装流程。以下是解决此问题的步骤: 本文运行环境:联想小新Air 14,Windo…

    2026年9月25日 • 用户投稿
    000
  • win10realtek自动弹出解决方法

    win10realtek自动弹出解决方法win10realtek自动弹出解决方法win10realtek自动弹出解决方法win10realtek自动弹出解决方法

    我们在使用电脑玩游戏、观看电影或者办公时,有时会遇到realtek高保真音频管理器频繁弹窗的问题。针对这种情况,小编建议可以通过控制面板来调整相关设置。具体操作步骤如下,希望能帮到您。 Realtek高保真音频管理器总是弹出窗口 首先,在屏幕左下角的搜索框中输入“控制面板”。 在搜索结果中找到并打开…

    2026年9月25日 • 用户投稿
    200
  • sublime怎么运行php文件 _sublime PHP文件运行方法

    sublime怎么运行php文件 _sublime PHP文件运行方法sublime怎么运行php文件 _sublime PHP文件运行方法sublime怎么运行php文件 _sublime PHP文件运行方法sublime怎么运行php文件 _sublime PHP文件运行方法

    首先确保PHP已安装并加入环境变量,然后在Sublime Text中创建PHP构建系统:通过Tools → Build System → New Build System…添加对应操作系统的JSON配置,保存为PHP.sublime-build至User目录;接着打开.php文件按Ctrl+ B或C…

    2026年9月25日 • 用户投稿
    000
  • PDF转Word怎么一键转换_PDF一键转Word的简单操作流程

    PDF转Word怎么一键转换_PDF一键转Word的简单操作流程PDF转Word怎么一键转换_PDF一键转Word的简单操作流程PDF转Word怎么一键转换_PDF一键转Word的简单操作流程PDF转Word怎么一键转换_PDF一键转Word的简单操作流程

    可通过在线工具、Word、WPS或Adobe软件将PDF转为Word。在线工具如iLovePDF上传即转;2. Word可直接打开PDF另存为.docx;3. WPS点击“PDF转Word”一键转换;4. Adobe Acrobat选择“导出PDF”为Word格式,精准保留原排版。 如果您需要将PD…

    2026年9月25日 • 用户投稿
    200
  • safari浏览器如何管理和删除Cookie_safari浏览器Cookie管理和删除方法

    清除或管理Safari浏览器的Cookie可解决网页加载异常、登录状态丢失等问题。1、通过“设置-隐私-管理网站数据”可查看并删除特定网站的Cookie;2、点击“移除全部”可彻底清除所有Cookie,重置浏览状态;3、勾选“阻止所有Cookie”能增强隐私保护,但会影响网站正常功能;4、使用“无痕…

    2026年9月25日
    100
  • Java中数据类型溢出的原理及预测方法

    Java中数据类型溢出的原理及预测方法Java中数据类型溢出的原理及预测方法Java中数据类型溢出的原理及预测方法Java中数据类型溢出的原理及预测方法

    本文旨在阐明Java中当数值超出所选数据类型范围时发生的溢出现象,并提供预测溢出结果的方法。文章将深入探讨计算机中数值的存储方式,特别是补码表示法,以及溢出时数值如何“环绕”的原理。通过理解这些概念,读者可以准确预测Java中数据类型溢出的结果。 理解计算机中的数值表示:补码 在计算机中,所有数据最…

    2026年9月25日 • 用户投稿
    100
  • uc浏览器怎么添加书签到主页_UC浏览器将书签添加到首页快捷方式

    uc浏览器怎么添加书签到主页_UC浏览器将书签添加到首页快捷方式uc浏览器怎么添加书签到主页_UC浏览器将书签添加到首页快捷方式uc浏览器怎么添加书签到主页_UC浏览器将书签添加到首页快捷方式uc浏览器怎么添加书签到主页_UC浏览器将书签添加到首页快捷方式

    首先可通过书签管理长按添加,其次在浏览时点击菜单选择添加到桌面,最后部分版本可直接使用工具栏+按钮创建快捷方式。 如果您希望快速访问常用网站,可以通过将书签添加到UC浏览器主页来实现便捷操作。这一功能可以帮助您在启动浏览器时一键跳转至目标页面。 本文运行环境:小米14,Android 14 一、通过…

    2026年9月25日 • 用户投稿
    100
  • 使用 DynamoDBMapper 进行条件更新操作

    使用 DynamoDBMapper 进行条件更新操作使用 DynamoDBMapper 进行条件更新操作使用 DynamoDBMapper 进行条件更新操作使用 DynamoDBMapper 进行条件更新操作

    本文将介绍如何利用 DynamoDBMapper 在 Java 中执行基于当前值的条件更新操作,特别是使用 “ADD” 操作来递减账户余额。虽然 DynamoDBMapper 默认不支持直接使用更新表达式,但通过配置 SaveBehavior,可以实现类似的效果。 Dynam…

    2026年9月25日 • 用户投稿
    000
  • 解决JavaFX应用导出为可运行JAR后FXMLLoader资源加载失败的问题

    解决JavaFX应用导出为可运行JAR后FXMLLoader资源加载失败的问题解决JavaFX应用导出为可运行JAR后FXMLLoader资源加载失败的问题解决JavaFX应用导出为可运行JAR后FXMLLoader资源加载失败的问题解决JavaFX应用导出为可运行JAR后FXMLLoader资源加载失败的问题

    本文旨在解决JavaFX应用在Eclipse中正常运行,但导出为可运行JAR包后,因FXMLLoader无法找到FXML资源文件而抛出IllegalStateException: Location is not set异常的问题。核心解决方案是调整FXMLLoader.setLocation()方法…

    2026年9月25日 • 用户投稿
    100
  • iQOO Z10 Turbo+ 续航登顶各大榜单 8000mAh 电池绝了

    iQOO Z10 Turbo+ 续航登顶各大榜单 8000mAh 电池绝了iQOO Z10 Turbo+ 续航登顶各大榜单 8000mAh 电池绝了iQOO Z10 Turbo+ 续航登顶各大榜单 8000mAh 电池绝了iQOO Z10 Turbo+ 续航登顶各大榜单 8000mAh 电池绝了

    8 月 4 日,iqoo 产品团队公布了 iqoo z10 turbo+ 的续航测试成绩,该机凭借出色的续航表现强势登顶多家主流媒体榜单,引发广泛关注。搭载 8000mah 超大容量蓝海电池与联发科最新旗舰芯片天玑 9400+,iqoo z10 turbo+ 成为兼顾高性能与持久续航用户的理想之选。…

    2026年9月25日 • 用户投稿
    100
  • 快手 Kwaipilot 团队发布两款 KAT 系列 Agentic Coding 大模型

    快手 Kwaipilot 团队发布两款 KAT 系列 Agentic Coding 大模型快手 Kwaipilot 团队发布两款 KAT 系列 Agentic Coding 大模型快手 Kwaipilot 团队发布两款 KAT 系列 Agentic Coding 大模型快手 Kwaipilot 团队发布两款 KAT 系列 Agentic Coding 大模型

    快手 kwaipilot 团队近日推出了两款全新的 kat 系列 agentic coding 大模型,标志着在代码智能领域的重大突破:开源的 32b 参数模型 kat-dev-32b 以及闭源的旗舰级模型 kat-coder。 据悉,这两款模型在代码理解与生成方面分别展现了卓越的轻量化性能与顶级的…

    2026年9月25日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信