新闻中心

Splide.js 垂直全屏滑块实现单页滚动的精确控制

2025-10-17
浏览次数:
返回列表

Splide.js 垂直全屏滑块实现单页滚动的精确控制

本文旨在解决使用 splide.js 实现垂直全屏滑块时,鼠标滚轮交互导致多页滑动的问题。通过详细阐述 `perpage` 和 `permove` 两个核心配置项的作用,指导开发者如何精确控制每次滚轮事件只滑动一页,从而实现流畅、专业的单页全屏滚动体验。

Splide.js 垂直全屏滑块单页滚动控制指南

在使用 Splide.js 构建垂直全屏滑块时,开发者常遇到一个挑战:当启用鼠标滚轮导航功能后,滑块在一次滚轮操作中可能会意外地滑动多页,而非预期的单页滚动。这通常发生在配置了 direction: 'ttb' (从上到下) 和 wheel: true (启用滚轮) 等选项之后。为了实现精确的单页滚动体验,我们需要深入理解并合理配置 Splide.js 的 perPage 和 perMove 选项。

理解 perPage 与 perMove

Splide.js 提供了丰富的配置选项来精细控制滑块的行为,其中 perPage 和 perMove 对于实现单页滚动至关重要:

  1. perPage (每页显示数量)

    • 此选项决定了在容器中同时显示多少个滑块。
    • 对于“全屏”滑块,通常意味着一次只显示一个完整的滑块内容,因此 perPage 常常被设置为 1。这确保了每个滑块元素都能占据整个视口区域(配合适当的 CSS 样式,如 height: 100vh)。
    • 如果 perPage 设置为大于 1 的值,则表示在滑块容器中会同时显示多个滑块。
  2. perMove (每次移动数量)

    • 此选项控制每次滑块移动操作(无论是通过导航箭头、分页器、触摸滑动还是鼠标滚轮)时,实际移动的滑块数量。
    • 为了实现“每次滚轮交互只滑动一页”的效果,perMove 必须设置为 1。这意味着无论用户如何操作,滑块都只会向前或向后移动一个单位的滑块。

实现单页滚动的关键配置

要实现一个垂直的全屏滑块,并且确保每次鼠标滚轮操作只滑动一页,核心在于将 perMove 设置为 1。同时,为了确保每个滑块都能呈现为“全屏”效果,我们通常会将 perPage 也设置为 1,并配合 CSS 样式来定义滑块的高度。

察言观数AskTable 察言观数AskTable

企业级AI数据表格智能体平台

察言观数AskTable 78 查看详情 察言观数AskTable

以下是实现这种效果的 Splide.js 配置示例:

document.addEventListener('DOMContentLoaded', function () {
  new Splide('#fullpage-slider', {
    direction: 'ttb',       // 设置滑块方向为从上到下 (Top to Bottom)
    height: '100vh',        // 设置滑块容器高度为视口高度,实现全屏效果
    wheel: true,            // 启用鼠标滚轮导航
    perPage: 1,             // 每页显示一个滑块
    perMove: 1,             // 每次移动一个滑块
    arrows: false,          // 可选:隐藏导航箭头
    pagination: false,      // 可选:隐藏分页器
    speed: 800,             // 可选:设置滑动速度,单位毫秒
    easing: 'cubic-bezier(0.25, 1, 0.5, 1)', // 可选:设置缓动函数
    // 其他可能需要的选项,例如:
    // keyboard: true,       // 启用键盘导航
    // drag: false,          // 禁用拖动滑动,专注于滚轮和键盘导航
  }).mount();
});

HTML 结构示例

为了配合上述 J*aScript 配置,您的 HTML 结构应包含一个 Splide 容器和多个滑块项:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Splide.js 垂直全屏滑块</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/css/splide.min.css">
    <style>
        body {
            margin: 0;
            overflow: hidden; /* 防止浏览器默认滚动条 */
            font-family: sans-serif;
            color: white;
        }
        .splide__track {
            height: 100vh; /* 确保轨道也占据整个视口高度 */
        }
        .splide__slide {
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 3em;
            height: 100vh; /* 每个滑块项占据整个视口高度 */
        }
        .splide__slide:nth-child(odd) {
            background-color: #3498db;
        }
        .splide__slide:nth-child(even) {
            background-color: #2ecc71;
        }
    </style>
</head>
<body>

    <div id="fullpage-slider" class="splide">
        <div class="splide__track">
            <ul class="splide__list">
                <li class="splide__slide">Slide 1</li>
                <li class="splide__slide">Slide 2</li>
                <li class="splide__slide">Slide 3</li>
                <li class="splide__slide">Slide 4</li>
                <li class="splide__slide">Slide 5</li>
            </ul>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/js/splide.min.js"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
          new Splide('#fullpage-slider', {
            direction: 'ttb',
            height: '100vh',
            wheel: true,
            perPage: 1,
            perMove: 1,
            arrows: false,
            pagination: false,
            speed: 800,
            easing: 'cubic-bezier(0.25, 1, 0.5, 1)',
          }).mount();
        });
    </script>
</body>
</html>

注意事项与优化

  • CSS 样式: 确保 .splide__track 和 .splide__slide 都设置了 height: 100vh,以保证每个滑块项能真正占据整个视口高度。同时,body 上的 overflow: hidden 可以防止浏览器自身的滚动条出现,确保 Splide 的滚轮控制能完全接管。
  • 平滑度: speed 和 easing 选项可以调整滑动动画的速度和缓动效果,从而优化用户体验。
  • 其他滚轮选项: Splide 还提供了 wheelMinThreshold (滚轮最小阈值) 和 wheelSleep (滚轮休眠时间) 等选项。这些选项主要用于微调滚轮灵敏度和防止过快连续触发,但解决“一次滑动多页”的核心问题仍是 perMove: 1。在 perMove: 1 生效后,可以根据需要进一步调整这些选项来优化滚轮交互的感受。
  • 可访问性: 考虑为滑块添加键盘导航 (keyboard: true) 或其他辅助功能,以提升用户体验。

总结

通过正确配置 Splide.js 的 perPage: 1 和 perMove: 1 选项,结合 direction: 'ttb' 和 height: '100vh',开发者可以轻松实现一个功能完善、响应灵敏且每次鼠标滚轮交互只滑动一页的垂直全屏滑块。这种精确的控制不仅提升了用户体验,也使得基于 Splide.js 的全屏演示或导航变得更加专业和流畅。

以上就是Splide.js 垂直全屏滑块实现单页滚动的精确控制的详细内容,更多请关注其它相关文章!


# javascript  # java  # html  # js  # npm  # css  # 每页  # 嘉兴seo优化策划  # 多页  # 心理社工网站建设流程  # 深圳seo站内优化  # 陈村电器网站建设  # 网站建设绿茶科技  # 仙桃广告网站推广开户  # 开铭网络seo推广  # 摄影师推广网站  # 饿了么推广营销  # 李宁的营销推广策略研究  # 都能  # 多个  # 复选框  # 可选  # 设置为  # 鼠标  # 全屏  # 滑块  # overflow  # .net  # cdn  # 浏览器 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接  响应式图片在网页设计中的正确实现方法  Python模块化编程:有效管理依赖与避免循环引用  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation  J*a 递归快速排序中静态变量的状态管理与陷阱  React/Next.js中实现列表项的动态移动与状态管理:兼论唯一键的重要性  Go语言中Map存储的结构体如何调用指针方法:深入解析与实践  拼多多赚钱渠道_拼多多收益来源  俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  qq游戏跨平台入口_qq游戏多设备同步登录  解决Bootstrap卡片顶部边距导致背景图下移的问题  c++项目目录结构应该如何组织_c++工程化项目结构规范  妖精动漫免费平台 妖精动漫官网资源观看网址  Go语言中Map值调用指针接收器方法的限制与应对  Lar*el递归关系中排除子孙节点的策略  解决 MongoDB 聚合查询中对象数组 _id 匹配问题  Flexbox布局实践:实现粘性导航栏与底部固定页脚  PHP表单数据传递:如何通过隐藏输入字段获取动态ID  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  Django通过AJAX异步上传图片并保存至模型的完整指南  在J*a中如何隐藏复杂性_使用门面模式组织对象交互  微信网页版扫码登录入口 微信网页版二维码登录入口  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  精准捕获:如何在页面中监听除特定元素外的所有点击事件  抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧  正确连接J*aScript到HTML实现可点击图片与自定义事件处理  AO3中文官网链接_AO3网页版稳定镜像站  电脑IP地址怎么查 查看本机IP地址的几种方法  腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法  韩剧圈正版入口页面_韩剧圈官网登录链接  高德地图沿途添加点失败如何解决 高德多点规划方法  冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  163邮箱官方主页登录 直达网易邮箱登录核心页面  QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口  谷歌邮箱网页版官方页面入口 谷歌邮箱网页端快速访问  一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法  如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  学习通在线学习平台 学习通网页版直接进入课程中心  CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略  “音游” × “怪文书” 题材的节奏冒险游戏 《晕晕电波症候群》确定于2026年4月发售!  Tabulator表格中精确实现日期时间排序的指南  QQ网页版官方账号入口 QQ网页版网页版登录指南  使用J*aScript检测输入元素是否包含在特定类中  J*a TimerTask中HashMap意外清空的深层原因与解决方案  Typer应用中动态命令行参数的解析与处理 

搜索