当前位置:首页 > JavaScript

js实现图片滚动效果

2026-01-13 14:42:14JavaScript

使用CSS动画实现图片滚动

通过CSS的@keyframesanimation属性实现无缝滚动效果。将图片容器设置为横向排列,通过动画平移位置。

<style>
  .scroll-container {
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
  }
  .scroll-content {
    display: inline-block;
    animation: scroll 20s 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" width="200">
    <img src="image2.jpg" width="200">
    <!-- 更多图片... -->
  </div>
  <div class="scroll-content" aria-hidden="true">
    <img src="image1.jpg" width="200">
    <img src="image2.jpg" width="200">
    <!-- 重复内容实现无缝滚动 -->
  </div>
</div>

使用JavaScript定时器实现

通过setInterval定期修改容器的scrollLeft属性实现平滑滚动。需计算内容宽度和滚动距离。

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

function animate() {
  scrollPos += 1;
  if (scrollPos >= content.scrollWidth / 2) {
    scrollPos = 0;
  }
  container.scrollLeft = scrollPos;
  requestAnimationFrame(animate);
}

animate();

使用第三方库实现

Swiper.js等现成库提供丰富的滚动效果配置:

import Swiper from 'swiper';

new Swiper('.swiper-container', {
  loop: true,
  autoplay: {
    delay: 2500,
    disableOnInteraction: false,
  },
  slidesPerView: 'auto',
});

响应式处理注意事项

动态计算图片数量与容器宽度:

function initScroll() {
  const imgWidth = 200; // 单图宽度
  const visibleImgs = Math.ceil(container.offsetWidth / imgWidth);
  content.style.width = `${imgWidth * (images.length + visibleImgs)}px`;
}
window.addEventListener('resize', initScroll);

性能优化建议

使用will-change提升渲染性能:

js实现图片滚动效果

.scroll-content {
  will-change: transform;
}

对于大量图片采用虚拟滚动技术,只渲染可视区域内的图片元素。滚动事件建议使用requestAnimationFrame而非直接setInterval

标签: 效果图片
分享给朋友:

相关文章

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

h5如何实现vr效果

h5如何实现vr效果

使用WebXR API实现VR效果 WebXR是浏览器中实现VR/AR的核心API,支持设备姿态追踪、渲染交互等功能。需在支持WebXR的设备(如Oculus、HTC Vive)或浏览器模拟环境中运行…

vue实现放大图片

vue实现放大图片

实现图片放大功能的方法 在Vue中实现图片放大功能,可以通过多种方式实现。以下是几种常见的方法: 使用CSS transform属性 通过CSS的transform: scale()属性实现图片放…

js实现图片加载

js实现图片加载

使用Image对象加载图片 通过JavaScript的Image对象可以动态加载图片,适用于需要预加载或动态插入图片的场景。 const img = new Image(); img.src =…

vue实现加载图片

vue实现加载图片

Vue 实现图片加载的方法 在 Vue 中加载图片可以通过多种方式实现,以下是一些常见的方法: 使用静态资源路径 将图片放在 public 或 assets 目录下,通过相对路径或绝对路径引用。…

vue实现翻牌效果

vue实现翻牌效果

实现翻牌效果的基本思路 翻牌效果通常指卡片正面和背面的翻转动画,可以通过CSS 3D变换和Vue的过渡系统实现。核心是利用transform-style: preserve-3d和rotateY旋转完…