新闻中心
实现 Splide.js 垂直全屏滑块:解决鼠标滚轮单页滚动问题

本教程详细介绍了如何使用 Splide.js 创建一个垂直方向的全屏滑块,并解决鼠标滚轮滚动时一次滑动多页的问题。通过正确配置 `direction`、`height`、`wheel`、`perPage` 和 `perMove` 等核心选项,您可以确保每次滚轮操作只平滑地切换一个页面,从而实现理想的单页滚动体验。
引言:Splide.js 垂直全屏滑块的挑战
在使用 S
plide.js 构建垂直方向的全屏滑块时,开发者常常会遇到一个问题:当启用鼠标滚轮滚动(wheel: true)后,滑块在用户滚动鼠标滚轮时,并非如预期般每次只切换一页,而是会一次性滑动多页。这通常会导致用户体验不佳,尤其是在需要精确控制页面切换的全屏展示场景中。这个问题通常源于 Splide.js 在未明确指定 perPage 和 perMove 等选项时,对垂直方向滚轮事件的默认处理方式。
核心解决方案:perPage 与 perMove 选项
要解决鼠标滚轮一次滑动多页的问题,关键在于正确理解和配置 Splide.js 的 perPage 和 perMove 选项。这两个选项协同工作,精确控制滑块的显示和移动行为。
perPage 选项:定义每页显示的幻灯片数量perPage 选项决定了在滑块的可见区域内,同时显示多少个完整的幻灯片。对于实现“全屏单页”效果,即每次只显示一个完整的幻灯片,应将 perPage 设置为 1。
perMove 选项:定义每次移动的幻灯片数量perMove 选项控制每次导航操作(无论是通过箭头、分页器、触摸滑动还是鼠标滚轮)时,滑块实际移动的幻灯片数量。要确保鼠标滚轮每次只切换一个幻灯片,perMove 必须设置为 1。这是解决“一次滑动多页”问题的核心。
察言观数AskTable
企业级AI数据表格智能体平台
78
查看详情
实现步骤与示例代码
下面将通过一个完整的示例,展示如何配置 Splide.js 以实现垂直全屏单页滚动的效果。
1. HTML 结构
首先,您需要一个基本的 Splide 容器和一些幻灯片元素。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Splide.js 垂直全屏单页滑块</title>
<!-- 引入 Splide.js CSS 样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/css/splide.min.css">
<style>
/* 确保 HTML 和 Body 没有默认边距和填充,并占据整个视口高度 */
html, body {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden; /* 防止页面自身滚动,与滑块滚轮冲突 */
font-family: Arial, sans-serif;
}
/* Splide 容器和幻灯片样式 */
.splide {
height: 100vh; /* 确保滑块容器占据整个视口高度 */
}
.splide__track {
height: 100%; /* 轨道高度与容器一致 */
}
.splide__list {
height: 100%; /* 列表高度与轨道一致 */
}
.splide__slide {
display: flex;
align-items: center;
justify-content: center;
font-size: 4em;
color: white;
height: 100vh; /* 每个幻灯片占据整个视口高度 */
box-sizing: border-box; /* 边框和内边距包含在高度内 */
}
/* 示例幻灯片背景色 */
.splide__slide:nth-child(1) { background-color: #3498db; }
.splide__slide:nth-child(2) { background-color: #e74c3c; }
.splide__slide:nth-child(3) { background-color: #2ecc71; }
.splide__slide:nth-child(4) { background-color: #f1c40f; }
.splide__slide:nth-child(5) { background-color: #9b59b6; }
</style>
</head>
<body>
<div id="vertical-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>
<!-- 引入 Splide.js J*aScript 库 -->
<script src="https://cdn.jsdelivr.net/npm/@splidejs/splide@4.1.4/dist/js/splide.min.js"></script>
<script>
// J*aScript 配置将在下方详细说明
</script>
</body>
</html>2. J*aScript 配置
在 <script> 标签中添加以下 J*aScript 代码,初始化 Splide 实例并设置相关选项。</script>
document.addEventListener('DOMContentLoaded', function () {
new Splide('#vertical-slider', {
direction: 'ttb', // 设置滑块方向为垂直 (Top to Bottom)
height: '100vh', // 设置滑块容器高度为视口高度,实现全屏
wheel: true, // 启用鼠标滚轮事件来控制滑块导航
perPage: 1, // 每页显示一个幻灯片,实现单页全屏显示
perMove: 1, // 每次滚轮操作只移动一个幻灯片,解决多页滚动问题
arrows: false, // 可选:隐藏导航箭头
pagination: true, // 可选:显示分页指示器
releaseWheel: true // 推荐:当滑块到达起点或终点时,允许滚轮事件继续滚动页面
}).mount();
});关键选项详解
-
direction: 'ttb':
- 此选项将滑块的方向设置为“从上到下”(Top to Bottom),使其成为垂直滑块。
-
height: '100vh':
- 将滑块容器的高度设置为 100vh(100% 视口高度),确保滑块占据整个屏幕高度,实现全屏效果。
-
wheel: true:
- 启用鼠标滚轮事件。当用户滚动鼠标滚轮时,Splide 滑块将响应并进行导航。
-
perPage: 1:
- 这是实现“全屏单页”显示的关键。它告诉 Splide 始终只显示一个完整的幻灯片。
-
perMove: 1:
- 这是解决鼠标滚轮一次滑动多页问题的核心。它强制 Splide 在每次导航操作(包括鼠标滚轮滚动)时,只移动一个幻灯片。
-
arrows: false (可选):
- 隐藏默认的左右导航箭头,因为在全屏垂直滑块中,用户通常更依赖滚轮或分页器。
-
pagination: true (可选):
- 显示分页指示器(小圆点),这对于垂直全屏滑块非常有用,可以直观地显示当前页码和总页数。
-
releaseWheel: true (可选但推荐):
- 此选项增强了用户体验。当滑块到达第一个或最后一个幻灯片时,如果页面上还有其他可滚动内容,鼠标滚轮事件将“释放”并允许滚动页面的其余部分,而不是卡在滑块上。
注意事项与最佳实践
- CSS 样式一致性: 确保 .splide__slide 元素本身也具有 height: 100vh; 样式,以确保每个幻灯片都能完全填充屏幕。同时,对 html 和 body 元素设置 margin: 0; padding: 0; height: 100%; overflow: hidden; 是实现无缝全屏体验的常见做法。
- 内容适应性: 垂直全屏滑块要求每个幻灯片的内容能够良好地适应 100vh 的高度。考虑使用 Flexbox 或 Grid 布局来管理幻灯片内部的内容,确保在不同屏幕尺寸下都能优雅地显示。
- 用户体验反馈: 除了 pagination,还可以考虑添加其他视觉或动画反馈,让用户清楚地知道他们正在切换页面。
- 无障碍性: 如果隐藏了默认的箭头导航,请确保提供其他键盘可访问的导航方式,以提升无障碍体验。Splide.js 通常会自动处理一些基本的键盘导航。
- 性能优化: 对于包含大量图片或复杂内容的滑块,考虑使用 Splide.js 提供的懒加载(lazyLoad: 'sequential' 或 'nearby')等功能,以优化加载性能。
总结
通过正确配置 Splide.js 的 direction: 'ttb'、height: '100vh'、wheel: true,并结合关键的 perPage: 1 和 perMove: 1 选项,您可以轻松实现一个功能完善、用户体验流畅的垂直全屏单页滑块。这种配置不仅解决了鼠标滚轮一次滑动多页的问题,还为构建现代化的全屏展示页面提供了坚实的基础。
以上就是实现 Splide.js 垂直全屏滑块:解决鼠标滚轮单页滚动问题的详细内容,更多请关注其它相关文章!
# 这是
# 营销优势的线下推广策略
# 吉林seo优化哪家强
# 惠州知名seo公司排名
# 长沙产品营销推广公司
# 吉林网站优化公司选哪家
# 营销推广啥意思
# 尾盘推广营销
# 网站里的关键词怎么优化
# 网站香谢丽舍优化软件
# 电机关键词排名
# 加载
# 复选框
# 设置为
# 分页
# css
# 多页
# 可选
# 全屏
# 鼠标
# 滑块
# overflow
# .net
# cdn
# 懒加载
# npm
# js
# html
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
J*aScript中针对特定容器内图片动画的实现教程
小红书网页版入口链接分享 小红书官网直接进
单射、满射与双射的关系 一文理清所有逻辑
mcjs网页版流畅运行 mcjs低配电脑畅玩入口
Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略
解决Django多数据库/多Schema环境下外键迁移问题
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
Animex动漫社网入口地址 Animex动漫社网正版在线入口
sublime侧边栏怎么增强功能_SideBarEnhancements for sublime安装与配置
Win10文件资源管理器“此电脑”分组怎么关 Win10恢复经典视图【技巧】
苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
淘宝支付提示失败如何解决 淘宝支付流程优化方法
qq游戏网页版直接玩_qq游戏免下载快速入口
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
4399体育竞技小游戏_4399小游戏赛事入口
b站怎么看视频的弹幕数量_b站弹幕数量查看方法
Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口
整合Supabase认证与Django模型:跨模式迁移的解决方案
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
12306选座系统怎么选连座_12306选座多人连坐操作方法
CSS实现侧边栏导航项全宽圆角悬停背景效果
AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南
百度网盘网页版入口 百度网盘网页版官方登录网址
从J*aScript对象中精确提取指定属性的教程
Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐
React中useState与局部变量:理解组件状态管理与渲染机制
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
自定义Bag-of-Words实现:处理带负号的词汇权重
AI抖音网页版免费视频入口 AI抖音网页端最新视频实时观看
4399网页游戏电脑版全新入口 4399电脑端在线玩指南
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
CSS图片焦点样式实现教程:理解与应用tabindex属性
TikTok国际版官网直达_TikTok国际版官网直达进入在线观看
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
qq游戏免费畅玩入口_qq游戏电脑版快速启动
知音漫客官网漫画下载_知音漫客网页版阅读记录
如何有效阻止外部脚本意外修改内联样式的高度属性
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
Excel Power Pivot如何处理XML数据源 构建高级数据模型
Python中如何避免重复条件判断:利用数据结构实现动态逻辑
Node.js CSV 数据处理:基于字段空值条件过滤整条记录的策略
印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】
处理嵌套交互式控件:前端可访问性指南
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
魅族17怎样用浏览器译外语网页_iPhone魅族17浏览器译外语网页【即时翻译】
抓大鹅解压小游戏 抓大鹅摸鱼解压入口
vivo浏览器自带的下载器速度慢怎么办 vivo浏览器提升文件下载速度的技巧


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