当前位置:首页 > 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

js实现图片滚动

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();

添加交互控制

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

js实现图片滚动

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
分享给朋友:

相关文章

h5实现全景图片

h5实现全景图片

H5 实现全景图片的方法 使用 Three.js 库 Three.js 是一个强大的 3D 库,可以用于创建全景图片效果。以下是一个简单的实现步骤: 引入 Three.js 库 <scri…

js实现图表

js实现图表

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

vue实现图片循环

vue实现图片循环

实现图片循环展示 在Vue中实现图片循环展示可以通过v-for指令结合数组数据完成。以下是具体实现方式: 基础循环展示 准备图片数据数组,使用v-for渲染图片列表: <template&g…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

vue图片实现多选

vue图片实现多选

Vue 图片多选实现方法 在 Vue 中实现图片多选功能可以通过以下几种方式完成,具体取决于项目需求和复杂度。 使用 v-model 和数组存储选中状态 通过 v-model 绑定一个数组来记录选中…