当前位置:首页 > JavaScript

js实现图片循环滚动

2026-04-03 21:05:14JavaScript

实现图片循环滚动的 JavaScript 方法

方法一:使用 CSS 动画结合 JavaScript 控制

通过 CSS animation 属性实现滚动效果,JavaScript 用于动态调整内容或监听事件。

js实现图片循环滚动

<div class="scroll-container">
  <div class="scroll-content">
    <img src="image1.jpg" alt="Image 1">
    <img src="image2.jpg" alt="Image 2">
    <img src="image3.jpg" alt="Image 3">
    <!-- 复制一份图片以实现无缝循环 -->
    <img src="image1.jpg" alt="Image 1">
    <img src="image2.jpg" alt="Image 2">
    <img src="image3.jpg" alt="Image 3">
  </div>
</div>
.scroll-container {
  width: 100%;
  overflow: hidden;
}
.scroll-content {
  display: flex;
  animation: scroll 10s linear infinite;
}
@keyframes scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
const scrollContent = document.querySelector('.scroll-content');
// 动态调整内容宽度
scrollContent.style.width = `${scrollContent.children.length * 100}px`;

方法二:纯 JavaScript 实现动态滚动

通过 requestAnimationFramesetInterval 动态修改元素的 transformleft 属性。

js实现图片循环滚动

const container = document.querySelector('.scroll-container');
const content = document.querySelector('.scroll-content');
let position = 0;

function scrollImages() {
  position -= 1;
  if (position <= -content.offsetWidth / 2) {
    position = 0;
  }
  content.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(scrollImages);
}
scrollImages();

方法三:使用第三方库(如 Swiper.js)

Swiper.js 提供了开箱即用的轮播功能,支持循环滚动。

<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide"><img src="image1.jpg"></div>
    <div class="swiper-slide"><img src="image2.jpg"></div>
    <div class="swiper-slide"><img src="image3.jpg"></div>
  </div>
</div>
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
const swiper = new Swiper('.swiper', {
  loop: true,
  autoplay: {
    delay: 1000,
  },
});

注意事项

  • 无缝循环:需要在滚动内容末尾复制一份图片,确保过渡平滑。
  • 性能优化:使用 transform 而非 left 属性,避免触发重排。
  • 响应式设计:监听窗口大小变化,动态调整滚动速度或内容宽度。

扩展功能

  • 悬停暂停:通过监听 mouseentermouseleave 事件暂停/恢复滚动。
  • 触摸支持:添加 touchstarttouchend 事件处理,提升移动端体验。

标签: 图片js
分享给朋友:

相关文章

vue实现组件循环图片

vue实现组件循环图片

Vue 实现组件循环图片的方法 在 Vue 中实现组件循环图片通常可以通过 v-for 指令结合动态数据绑定完成。以下是几种常见的实现方式: 使用静态图片路径数组 假设有一组本地图片路径,可以通过数…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图片滚动效果

js实现图片滚动效果

使用CSS动画实现图片滚动 通过CSS的@keyframes和animation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。 <style> .scroll-c…

h5实现图片压缩

h5实现图片压缩

使用Canvas API压缩图片 HTML5的Canvas API可以通过调整画布尺寸和图像质量来实现图片压缩。创建一个Canvas元素,将图片绘制到Canvas上,再通过toDataURL或toBl…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…