下面是一个使用JavaScript实现的可自定义速度的图片无缝滚动示例。这个示例假设你已经有一组图片,并且希望它们能够在一个容器中无缝滚动。
HTML 部分(设置容器和图片列表):
<div id="scrollContainer" style="overflow: hidden; width: 500px; height: 300px; position: relative;">
<div id="scrollImages" style="position: absolute; white-space: nowrap;">
<img src="image1.jpg" alt="Image 1" style="height: 300px; vertical-align: top;">
<img src="image2.jpg" alt="Image 2" style="height: 300px; vertical-align: top;">
<img src="image3.jpg" alt="Image 3" style="height: 300px; vertical-align: top;">
<!-- 重复第一张图片以实现无缝滚动 -->
<img src="image1.jpg" alt="Image 1" style="height: 300px; visibility: hidden; vertical-align: top;">
</div>
</div>
<button id="speedControl">调整速度</button>
JavaScript 部分(实现滚动和速度控制):
let scrollSpeed = 2; // 初始速度,单位像素/毫秒
let scrollPosition = 0;
function scrollImages() {
scrollPosition -= scrollSpeed;
document.getElementById('scrollImages').style.transform = `translateX(${scrollPosition}px)`;
// 检查是否到达最后一张图片的末尾(通过隐藏的第一张图片检测)
if (scrollPosition <= -document.getElementById('scrollImages').firstElementChild.offsetWidth) {
scrollPosition = 0; // 重置滚动位置
}
requestAnimationFrame(scrollImages); // 循环调用
}
scrollImages(); // 开始滚动
document.getElementById('speedControl').addEventListener('click', function() {
// 这里简单地通过改变速度值来模拟速度调整
scrollSpeed = scrollSpeed === 2 ? 1 : 2; // 切换速度
console.log('滚动速度已更新为:', scrollSpeed, '像素/毫秒');
});
注意:
1. 容器 `#scrollContainer` 设置了 `overflow: hidden` 以隐藏超出部分的内容。
2. 图片列表 `#scrollImages` 被设置为 `position: absolute`,并通过 `translateX` 进行水平移动以实现滚动效果。
3. 为了实现无缝滚动,我在图片列表的末尾重复了第一张图片,但设置为 `visibility: hidden`,以便在滚动过程中不会显示出来。
4. 使用 `requestAnimationFrame` 来循环调用 `scrollImages` 函数,实现平滑滚动。
5. 通过点击按钮 `#speedControl` 来调整滚动速度。这里只是简单地切换了两个速度值,你可以根据需要调整这个逻辑。
请确保在实际使用时,根据你的具体需求调整图片路径、容器尺寸、滚动速度等参数。