当前位置:首页 > JavaScript

js实现图片滚动

2026-01-16 12:20:56JavaScript

图片滚动的实现方法

使用CSS动画实现

通过CSS的animation@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。

<style>
  .scroll-container {
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
  }
  .scroll-content {
    display: inline-block;
    animation: scroll 10s linear infinite;
  }
  @keyframes scroll {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
  }
</style>

<div class="scroll-container">
  <div class="scroll-content">
    <img src="image1.jpg">
    <img src="image2.jpg">
    <img src="image3.jpg">
  </div>
</div>

使用JavaScript定时器

通过JavaScript的setInterval函数可以更灵活地控制图片滚动,适合需要交互的场景。

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)`;
}

setInterval(scrollImages, 20);

使用requestAnimationFrame

对于更流畅的动画效果,可以使用requestAnimationFrame替代setInterval

let animationId;
let position = 0;

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

// 启动动画
animate();

// 停止动画
function stopAnimation() {
  cancelAnimationFrame(animationId);
}

实现无限循环滚动

为了无缝循环,需要复制一份图片内容并调整滚动逻辑。

const container = document.querySelector('.scroll-container');
const content = document.querySelector('.scroll-content');
// 克隆内容以实现无缝滚动
content.innerHTML += content.innerHTML;
let position = 0;

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

scrollImages();

添加交互控制

可以为滚动添加暂停、继续等交互功能。

let isScrolling = true;
let animationId;

function toggleScroll() {
  isScrolling = !isScrolling;
  if (isScrolling) {
    scrollImages();
  } else {
    cancelAnimationFrame(animationId);
  }
}

// 点击容器暂停/继续
container.addEventListener('click', toggleScroll);

响应式调整

在窗口大小变化时,需要重新计算滚动参数。

function resetScroll() {
  position = 0;
  content.style.transform = `translateX(${position}px)`;
}

window.addEventListener('resize', resetScroll);

使用第三方库

对于更复杂的需求,可以考虑使用专门的处理库:

js实现图片滚动

这些库提供了丰富的配置选项和响应式支持,可以快速实现各种滑动效果。

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

相关文章

vue实现图片轮播

vue实现图片轮播

Vue 实现图片轮播的方法 使用第三方库(推荐) 安装 vue-awesome-swiper 库,这是基于 Swiper 的 Vue 封装: npm install swiper vue-a…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

vue实现图片单选

vue实现图片单选

Vue 实现图片单选功能 在 Vue 中实现图片单选功能可以通过多种方式完成,以下是两种常见的实现方法: 方法一:使用 v-model 和单选按钮 通过将单选按钮与图片绑定,利用 v-model 管…

react如何添加图片

react如何添加图片

在React中添加图片的方法 使用import导入本地图片 将图片文件放在项目目录中(如src/assets),通过import语句引入后作为src属性值: import logo from './…