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

简单js实现轮播

2026-01-30 17:31:56JavaScript

实现基础轮播图

使用HTML和CSS创建基本结构,JavaScript实现轮播逻辑:

<div class="slider">
  <div class="slides">
    <img src="image1.jpg" class="slide active">
    <img src="image2.jpg" class="slide">
    <img src="image3.jpg" class="slide">
  </div>
  <button class="prev">❮</button>
  <button class="next">❯</button>
</div>
.slider {
  position: relative;
  width: 500px;
  height: 300px;
  overflow: hidden;
}
.slides {
  display: flex;
  transition: transform 0.5s ease;
}
.slide {
  min-width: 100%;
}
.active {
  display: block;
}
button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.prev { left: 10px; }
.next { right: 10px; }

JavaScript轮播逻辑

const slides = document.querySelectorAll('.slide');
const prevBtn = document.querySelector('.prev');
const nextBtn = document.querySelector('.next');
const slidesContainer = document.querySelector('.slides');
let currentIndex = 0;

function updateSlide() {
  slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;
  slides.forEach(slide => slide.classList.remove('active'));
  slides[currentIndex].classList.add('active');
}

nextBtn.addEventListener('click', () => {
  currentIndex = (currentIndex + 1) % slides.length;
  updateSlide();
});

prevBtn.addEventListener('click', () => {
  currentIndex = (currentIndex - 1 + slides.length) % slides.length;
  updateSlide();
});

// 自动轮播
setInterval(() => {
  currentIndex = (currentIndex + 1) % slides.length;
  updateSlide();
}, 3000);

添加指示器

在HTML中添加指示器元素:

简单js实现轮播

<div class="indicators"></div>

JavaScript部分添加指示器逻辑:

简单js实现轮播

const indicatorsContainer = document.querySelector('.indicators');

function createIndicators() {
  slides.forEach((_, index) => {
    const indicator = document.createElement('div');
    indicator.classList.add('indicator');
    if(index === 0) indicator.classList.add('active');
    indicator.addEventListener('click', () => {
      currentIndex = index;
      updateSlide();
    });
    indicatorsContainer.appendChild(indicator);
  });
}

function updateIndicators() {
  document.querySelectorAll('.indicator').forEach((ind, index) => {
    ind.classList.toggle('active', index === currentIndex);
  });
}

// 在updateSlide函数中调用
function updateSlide() {
  slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;
  slides.forEach(slide => slide.classList.remove('active'));
  slides[currentIndex].classList.add('active');
  updateIndicators();
}

createIndicators();

触摸支持

添加触摸事件支持移动设备:

let touchStartX = 0;
let touchEndX = 0;

slidesContainer.addEventListener('touchstart', e => {
  touchStartX = e.changedTouches[0].screenX;
});

slidesContainer.addEventListener('touchend', e => {
  touchEndX = e.changedTouches[0].screenX;
  handleSwipe();
});

function handleSwipe() {
  if(touchEndX < touchStartX - 50) {
    currentIndex = (currentIndex + 1) % slides.length;
  }
  if(touchEndX > touchStartX + 50) {
    currentIndex = (currentIndex - 1 + slides.length) % slides.length;
  }
  updateSlide();
}

性能优化

添加过渡结束事件处理:

let isTransitioning = false;

slidesContainer.addEventListener('transitionstart', () => {
  isTransitioning = true;
});

slidesContainer.addEventListener('transitionend', () => {
  isTransitioning = false;
});

function updateSlide() {
  if(isTransitioning) return;
  slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;
  // 其余逻辑...
}

标签: 简单js
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Jav…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…