
本文旨在解决使用 splide.js 实现垂直全屏滑块时,鼠标滚轮交互导致多页滑动的问题。通过详细阐述 `perpage` 和 `permove` 两个核心配置项的作用,指导开发者如何精确控制每次滚轮事件只滑动一页,从而实现流畅、专业的单页全屏滚动体验。
在使用 Splide.js 构建垂直全屏滑块时,开发者常遇到一个挑战:当启用鼠标滚轮导航功能后,滑块在一次滚轮操作中可能会意外地滑动多页,而非预期的单页滚动。这通常发生在配置了 direction: 'ttb' (从上到下) 和 wheel: true (启用滚轮) 等选项之后。为了实现精确的单页滚动体验,我们需要深入理解并合理配置 Splide.js 的 perPage 和 perMove 选项。
Splide.js 提供了丰富的配置选项来精细控制滑块的行为,其中 perPage 和 perMove 对于实现单页滚动至关重要:
perPage (每页显示数量)
perMove (每次移动数量)
要实现一个垂直的全屏滑块,并且确保每次鼠标滚轮操作只滑动一页,核心在于将 perMove 设置为 1。同时,为了确保每个滑块都能呈现为“全屏”效果,我们通常会将 perPage 也设置为 1,并配合 CSS 样式来定义滑块的高度。
以下是实现这种效果的 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();
});为了配合上述 JavaScript 配置,您的 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>通过正确配置 Splide.js 的 perPage: 1 和 perMove: 1 选项,结合 direction: 'ttb' 和 height: '100vh',开发者可以轻松实现一个功能完善、响应灵敏且每次鼠标滚轮交互只滑动一页的垂直全屏滑块。这种精确的控制不仅提升了用户体验,也使得基于 Splide.js 的全屏演示或导航变得更加专业和流畅。
以上就是Splide.js 垂直全屏滑块实现单页滚动的精确控制的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号