当前位置:首页 > 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提升渲染性能:

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

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

js实现图片滚动效果

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

相关文章

vue实现图片取色

vue实现图片取色

Vue 实现图片取色功能 使用 Canvas API 提取颜色 在 Vue 项目中,可以通过 Canvas API 实现图片取色功能。创建一个组件,利用 ref 获取图片元素并绘制到 Canvas 上…

css制作图片

css制作图片

CSS 制作图片的方法 使用 background-image 属性 通过 background-image 属性可以为元素设置背景图片。这种方法适用于将图片作为背景而非内容的一部分。 .elem…

css3手工制作图片

css3手工制作图片

使用CSS3手工制作图片 CSS3可以通过各种属性如box-shadow、border-radius、gradient等来手工绘制简单的图形或图片效果。以下是几种常见的方法: 绘制圆形 通过bor…

vue实现拖动图片验证

vue实现拖动图片验证

Vue 实现拖动图片验证功能 核心思路 拖动图片验证通常需要用户将图片拖动到指定区域或按正确顺序排列。实现时需要处理拖拽事件、验证逻辑和视觉反馈。 实现步骤 1. 基础组件结构 <templ…

vue2实现图片懒加载

vue2实现图片懒加载

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

jquery效果

jquery效果

jQuery 动画效果 jQuery 提供了多种内置动画效果,可用于实现平滑的页面交互。常用的方法包括 show()、hide()、toggle()、fadeIn()、fadeOut()、slideU…