当前位置:首页 > 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);

高级功能扩展

添加导航按钮控制

js图片轮播的实现

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}%)`;
  // 更新激活的指示器
}

响应式处理

监听窗口大小变化

js图片轮播的实现

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实现方案

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

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

相关文章

vue实现图片加载

vue实现图片加载

Vue 实现图片加载的方法 在 Vue 中实现图片加载可以通过多种方式,以下是一些常见的方法: 使用 v-bind 绑定图片路径 通过 v-bind 动态绑定图片路径,可以灵活地加载本地或远程图片。…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

jquery图片轮播

jquery图片轮播

jQuery图片轮播实现方法 基础HTML结构 创建一个简单的HTML结构,包含轮播容器、图片列表和导航按钮。 <div class="slider"> <div class=…

vue实现滑动图片

vue实现滑动图片

实现滑动图片的基本思路 在Vue中实现滑动图片效果,通常可以通过以下几种方式完成。滑动图片的核心在于处理用户触摸或鼠标事件,计算位移,并动态调整图片位置。 使用CSS过渡和Vue数据绑定 通过Vue…

vue实现vr图片

vue实现vr图片

Vue 实现 VR 图片的方法 使用 A-Frame 框架 A-Frame 是一个基于 WebVR 的框架,可以轻松在 Vue 项目中实现 VR 效果。安装 A-Frame 后,通过 <a-sc…