当前位置:首页 > JavaScript

js图片轮播的实现

2026-04-03 21:47:31JavaScript

基础实现方法

HTML结构需包含轮播容器和图片列表

<div class="slider">
  <div class="slides">
    <img src="image1.jpg">
    <img src="image2.jpg">
    <img src="image3.jpg">
  </div>
</div>

CSS设置基础样式和隐藏非活动图片

.slider {
  width: 600px;
  overflow: hidden;
}
.slides {
  display: flex;
  transition: transform 0.5s ease;
}
.slides img {
  width: 100%;
  flex-shrink: 0;
}

JavaScript核心逻辑

let currentSlide = 0;
const slides = document.querySelector('.slides');
const totalSlides = document.querySelectorAll('.slides img').length;

function nextSlide() {
  currentSlide = (currentSlide + 1) % totalSlides;
  slides.style.transform = `translateX(-${currentSlide * 100}%)`;
}

// 自动轮播
setInterval(nextSlide, 3000);

高级功能扩展

添加导航按钮控制

document.querySelector('.next').addEventListener('click', nextSlide);

document.querySelector('.prev').addEventListener('click', () => {
  currentSlide = (currentSlide - 1 + totalSlides) % totalSlides;
  slides.style.transform = `translateX(-${currentSlide * 100}%)`;
});

添加指示器

const indicators = document.querySelector('.indicators');
Array.from({length: totalSlides}).forEach((_, i) => {
  const dot = document.createElement('span');
  dot.addEventListener('click', () => {
    currentSlide = i;
    updateSlider();
  });
  indicators.appendChild(dot);
});

function updateSlider() {
  slides.style.transform = `translateX(-${currentSlide * 100}%)`;
  // 更新激活的指示器
}

响应式处理

监听窗口大小变化

window.addEventListener('resize', () => {
  slides.style.width = `${totalSlides * slider.offsetWidth}px`;
  updateSlider();
});

性能优化

使用requestAnimationFrame

function smoothSlide() {
  requestAnimationFrame(() => {
    slides.style.transform = `translateX(-${currentSlide * 100}%)`;
  });
}

图片懒加载

<img data-src="image1.jpg" class="lazy">
const lazyLoad = () => {
  const lazyImages = document.querySelectorAll('.lazy');
  lazyImages.forEach(img => {
    if(img.getBoundingClientRect().top < window.innerHeight) {
      img.src = img.dataset.src;
      img.classList.remove('lazy');
    }
  });
};
window.addEventListener('scroll', lazyLoad);

第三方库推荐

Swiper.js实现方案

js图片轮播的实现

import Swiper from 'swiper';
new Swiper('.swiper-container', {
  loop: true,
  autoplay: {
    delay: 3000,
  },
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
});

标签: 图片js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

vue 实现图片

vue 实现图片

Vue 实现图片加载与展示的方法 在 Vue 中实现图片加载和展示可以通过多种方式完成,包括静态资源引用、动态绑定、懒加载等。以下是几种常见的方法: 静态资源引用 将图片放在项目的 public 或…

js分组实现

js分组实现

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

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

css制作图片

css制作图片

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

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…