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

js实现四张图片轮播

2026-04-04 12:22:59JavaScript

实现四张图片轮播的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 id="prevBtn">Prev</button>
  <button id="nextBtn">Next</button>
</div>

CSS样式

设置轮播样式确保每次只显示一张图片:

js实现四张图片轮播

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

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

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

button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
}

#prevBtn {
  left: 5px;
}

#nextBtn {
  right: 5px;
}

JavaScript逻辑

使用DOM操作实现轮播功能:

js实现四张图片轮播

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

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)`;
});

// 自动轮播(可选)
setInterval(() => {
  if (counter >= carouselImages.length - 1) {
    counter = 0;
  } else {
    counter++;
  }
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
}, 3000);

无限循环改进方案

修改边界条件实现无缝循环:

nextBtn.addEventListener('click', () => {
  if (counter >= carouselImages.length - 1) {
    counter = 0;
  } else {
    counter++;
  }
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
});

prevBtn.addEventListener('click', () => {
  if (counter <= 0) {
    counter = carouselImages.length - 1;
  } else {
    counter--;
  }
  carouselSlide.style.transform = `translateX(${-size * counter}px)`;
});

响应式处理

添加窗口大小变化监听:

window.addEventListener('resize', () => {
  const newSize = carouselImages[0].clientWidth;
  carouselSlide.style.transform = `translateX(${-newSize * counter}px)`;
});

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

相关文章

react如何引入图片

react如何引入图片

在React中引入图片的方法 使用import直接引入 将图片文件放在项目src目录下(如src/images),通过ES6的import语法引入: import logo from './…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…

vue实现图片缓存

vue实现图片缓存

实现图片缓存的方案 在Vue项目中实现图片缓存可以通过多种方式,以下列举几种常见且有效的方法: 使用Service Worker缓存图片 通过注册Service Worker实现离线缓存,利用Cac…

vue实现图片缩放

vue实现图片缩放

实现图片缩放的基本方法 在Vue中实现图片缩放可以通过CSS的transform: scale()属性或动态调整图片的width和height属性。以下是一个基础的实现示例: <templat…

vue实现选择图片

vue实现选择图片

Vue 实现选择图片的方法 使用 input[type="file"] 元素 在 Vue 模板中添加一个文件输入元素,通过 @change 事件监听文件选择: <template>…

vue 实现图片粘贴

vue 实现图片粘贴

实现图片粘贴功能 在Vue中实现图片粘贴功能,可以通过监听粘贴事件并处理剪贴板中的图片数据。以下是具体实现方法: 监听粘贴事件 在Vue组件中,为需要粘贴图片的元素添加paste事件监听器。可以使用…