当前位置:首页 > JavaScript

js实现图片滚动效果

2026-02-28 19:08:26JavaScript

使用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">
    <img src="image3.jpg" width="200">
    <!-- 重复图片以实现无缝滚动 -->
    <img src="image1.jpg" width="200">
    <img src="image2.jpg" width="200">
    <img src="image3.jpg" width="200">
  </div>
</div>

使用JavaScript实现可控滚动

通过requestAnimationFrame或定时器动态修改元素位置,实现可暂停、可控制速度的滚动。

js实现图片滚动效果

const container = document.querySelector('.scroll-container');
const content = document.querySelector('.scroll-content');
let position = 0;
let speed = 2;
let isPaused = false;

function animate() {
  if (!isPaused) {
    position -= speed;
    if (position <= -content.scrollWidth/2) {
      position = 0;
    }
    content.style.transform = `translateX(${position}px)`;
  }
  requestAnimationFrame(animate);
}

animate();

// 控制函数示例
function togglePause() { isPaused = !isPaused; }
function setSpeed(newSpeed) { speed = newSpeed; }

使用第三方库实现高级效果

引入Swiper.js等专业轮播库实现触摸滑动、分页导航等复杂交互。

js实现图片滚动效果

<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css">
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide"><img src="image1.jpg"></div>
    <div class="swiper-slide"><img src="image2.jpg"></div>
    <div class="swiper-slide"><img src="image3.jpg"></div>
  </div>
  <div class="swiper-pagination"></div>
</div>

<script>
  new Swiper('.swiper', {
    loop: true,
    autoplay: { delay: 3000 },
    pagination: { el: '.swiper-pagination' }
  });
</script>

响应式布局处理

通过监听窗口大小变化动态调整滚动参数,确保不同设备上的显示效果。

function handleResize() {
  const containerWidth = container.offsetWidth;
  speed = containerWidth * 0.01; // 根据容器宽度调整速度
}

window.addEventListener('resize', handleResize);
handleResize(); // 初始化

性能优化建议

避免在动画过程中触发重排,使用transformopacity等硬件加速属性。对于大量图片采用懒加载技术。

// 图片懒加载示例
const lazyImages = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      observer.unobserve(img);
    }
  });
});

lazyImages.forEach(img => observer.observe(img));

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

相关文章

vue实现图片查看

vue实现图片查看

Vue 实现图片查看功能 在 Vue 中实现图片查看功能,可以通过原生实现或使用第三方库。以下是几种常见的方法: 原生实现方式 使用 Vue 的指令和事件绑定实现基础的图片查看功能。 <te…

vue实现图片取色

vue实现图片取色

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

H5图片实现地图

H5图片实现地图

实现H5图片地图的方法 在H5中实现图片地图功能,可以通过以下方式完成。图片地图允许用户在图片的特定区域点击,触发不同的交互效果。 使用HTML的<map>和<area>标…

css制作图片

css制作图片

使用CSS创建图片效果 CSS可以通过多种方式实现图片的显示、处理和特效。以下是几种常见的方法: 使用background-image属性 在CSS中可以通过background-image属性将…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template…

react如何引用图片

react如何引用图片

在React中引用图片的方法 使用import直接引入图片 在React组件中,可以通过import语句将图片作为模块引入。这种方式适合在组件内部使用图片,Webpack会处理图片的路径和打包。 i…