当前位置:首页 > 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或定时器动态修改元素位置,实现可暂停、可控制速度的滚动。

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等专业轮播库实现触摸滑动、分页导航等复杂交互。

<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等硬件加速属性。对于大量图片采用懒加载技术。

js实现图片滚动效果

// 图片懒加载示例
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实现吸附效果的方法 吸附效果通常指页面滚动时,某个元素固定在特定位置(如顶部或底部)。以下是几种实现方式: 使用CSS的position: sticky 通过CSS的sticky定位实现吸附效…

css3制作立体效果

css3制作立体效果

使用 transform 属性实现立体旋转 通过 transform-style: preserve-3d 和 rotateX/Y/Z 实现 3D 空间变换: .container { tr…

vue实现图片查看

vue实现图片查看

实现图片查看功能 在Vue中实现图片查看功能可以通过多种方式完成,常见的有使用原生HTML5的<dialog>元素、第三方组件库(如Element UI、Vant等)或专用插件(如view…

vue实现突出效果

vue实现突出效果

Vue 实现突出效果的方法 在 Vue 中实现突出效果通常涉及动态样式绑定、动画过渡或第三方库的使用。以下是几种常见实现方式: 动态类名绑定 通过 v-bind:class 或简写 :class 实…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

vue实现轮播效果

vue实现轮播效果

使用Swiper插件实现轮播 安装Swiper及相关依赖: npm install swiper vue-awesome-swiper 组件代码示例: <template> <…