<…">
当前位置:首页 > JavaScript

js实现四张图片轮播

2026-03-01 11:38:11JavaScript

实现四张图片轮播的JavaScript方法

HTML结构

创建一个包含四张图片的轮播容器,并添加导航按钮:

<div class="carousel-container">
  <div class="carousel-slide">
    <img src="image1.jpg" alt="Image 1">
    <img src="image2.jpg" alt="Image 2">
    <img src="image3.jpg" alt="Image 3">
    <img src="image4.jpg" alt="Image 4">
  </div>
  <button class="prev-btn">❮</button>
  <button class="next-btn">❯</button>
</div>

CSS样式

设置轮播容器和图片的样式:

js实现四张图片轮播

.carousel-container {
  position: relative;
  width: 600px;
  height: 400px;
  margin: auto;
  overflow: hidden;
}

.carousel-slide {
  display: flex;
  width: 2400px; /* 4张图片 * 600px */
  transition: transform 0.5s ease-in-out;
}

.carousel-slide img {
  width: 600px;
  height: 400px;
}

.prev-btn, .next-btn {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,0.5);
  color: white;
  border: none;
  padding: 10px;
  cursor: pointer;
  z-index: 10;
}

.prev-btn {
  left: 10px;
}

.next-btn {
  right: 10px;
}

JavaScript逻辑

实现图片轮播的核心功能:

js实现四张图片轮播

const carouselSlide = document.querySelector('.carousel-slide');
const carouselImages = document.querySelectorAll('.carousel-slide img');
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');

let counter = 0;
const size = carouselImages[0].clientWidth;

// 初始化位置
carouselSlide.style.transform = `translateX(${-size * counter}px)`;

// 下一张按钮事件
nextBtn.addEventListener('click', () => {
  if (counter >= carouselImages.length - 1) return;
  counter++;
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
});

// 上一张按钮事件
prevBtn.addEventListener('click', () => {
  if (counter <= 0) return;
  counter--;
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
});

自动轮播功能

添加自动轮播功能:

let autoSlide = setInterval(() => {
  counter++;
  if (counter >= carouselImages.length) {
    counter = 0;
  }
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
}, 3000);

// 鼠标悬停时暂停自动轮播
carouselContainer.addEventListener('mouseenter', () => {
  clearInterval(autoSlide);
});

// 鼠标离开时恢复自动轮播
carouselContainer.addEventListener('mouseleave', () => {
  autoSlide = setInterval(() => {
    counter++;
    if (counter >= carouselImages.length) {
      counter = 0;
    }
    carouselSlide.style.transform = `translateX(${-size * counter}px)`;
  }, 3000);
});

无限循环改进

实现无限循环效果:

nextBtn.addEventListener('click', () => {
  if (counter >= carouselImages.length - 1) {
    counter = -1;
  }
  counter++;
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
  carouselSlide.style.transition = "transform 0.5s ease-in-out";
});

prevBtn.addEventListener('click', () => {
  if (counter <= 0) {
    counter = carouselImages.length;
  }
  counter--;
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
  carouselSlide.style.transition = "transform 0.5s ease-in-out";
});

这个实现包含了基本轮播功能、自动播放和无限循环效果。可以根据需要调整过渡时间、图片大小和其他样式参数。

标签: 四张图片
分享给朋友:

相关文章

vue实现组件循环图片

vue实现组件循环图片

Vue 中实现组件循环图片的方法 在 Vue 中,可以通过 v-for 指令循环渲染图片组件。假设有一组图片数据需要循环展示,可以采用以下方式: 数据准备 在组件的 data 或 props 中定…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('imag…

vue实现图片拼接

vue实现图片拼接

Vue 实现图片拼接的方法 使用 Canvas 进行图片拼接 Canvas 提供了强大的绘图能力,可以用于实现图片拼接功能。通过创建一个 Canvas 元素,将多张图片绘制到 Canvas 上,最终导…

vue实现生成图片

vue实现生成图片

Vue 实现生成图片的方法 使用 html2canvas 库 html2canvas 是一个流行的库,可以将 DOM 元素转换为 Canvas,进而生成图片。适用于 Vue 项目。 安装 html…

vue实现图片裁切

vue实现图片裁切

Vue 实现图片裁切的方法 使用 vue-cropperjs 库 vue-cropperjs 是一个基于 Cropper.js 的 Vue 封装库,专门用于图片裁切功能。 安装依赖: np…

vue实现发送图片

vue实现发送图片

使用 Vue 实现发送图片功能 前端实现(Vue 部分) 模板部分 <template> <div> <input type="file" accept="…