当前位置:首页 > 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实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

vue2实现图片懒加载

vue2实现图片懒加载

实现图片懒加载的方法 在Vue2中实现图片懒加载可以通过以下方法完成,核心原理是监听图片是否进入可视区域,再动态加载图片资源。 使用IntersectionObserver API Intersec…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组…