当前位置:首页 > JavaScript

js实现图片循环滚动

2026-02-28 20:39:58JavaScript

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

使用CSS动画结合JavaScript

通过CSS的@keyframes定义动画效果,JavaScript动态控制动画启停和重置。HTML结构中需要将图片横向排列在容器内。

<div class="scroll-container">
  <div class="image-track">
    <img src="image1.jpg" alt="">
    <img src="image2.jpg" alt="">
    <!-- 更多图片 -->
  </div>
</div>
.scroll-container {
  width: 100%;
  overflow: hidden;
}
.image-track {
  display: flex;
  animation: scroll 20s linear infinite;
}
@keyframes scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
const track = document.querySelector('.image-track');
// 克隆图片节点实现无缝循环
track.innerHTML += track.innerHTML;
// 鼠标悬停暂停动画
track.addEventListener('mouseenter', () => {
  track.style.animationPlayState = 'paused';
});
track.addEventListener('mouseleave', () => {
  track.style.animationPlayState = 'running';
});

纯JavaScript实现动态滚动

通过定时器动态修改translateX值,适合需要精确控制滚动速度的场景。

const container = document.querySelector('.scroll-container');
const track = document.querySelector('.image-track');
let position = 0;
const speed = 1; // 像素/帧

function animate() {
  position -= speed;
  if (position <= -track.scrollWidth/2) {
    position = 0;
  }
  track.style.transform = `translateX(${position}px)`;
  requestAnimationFrame(animate);
}
animate();

使用第三方库(Swiper.js)

对于复杂需求,推荐使用成熟的轮播库:

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>
</div>
import Swiper from 'swiper';
new Swiper('.swiper', {
  loop: true,
  autoplay: {
    delay: 3000,
  },
  speed: 800
});

注意事项

  • 图片容器宽度应设置为所有图片总宽度,避免出现空白
  • 移动端需添加touch事件支持
  • 性能优化:对图片使用will-change: transform提升渲染性能
  • 无限循环建议克隆首尾图片,避免出现滚动间隙

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

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

vue实现组件循环图片

vue实现组件循环图片

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

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

h5实现图片压缩

h5实现图片压缩

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

vue实现图片滚动

vue实现图片滚动

实现图片滚动的 Vue 组件 使用 Vue 实现图片滚动效果可以通过自定义组件或第三方库完成。以下是两种常见方法: 方法一:使用 CSS 动画和 Vue 动态绑定 通过 Vue 的 v-for 和…

js 实现图片轮播

js 实现图片轮播

基础实现方案 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS负责样式布局,JavaScript处理轮播逻辑。 <div class="…