当前位置:首页 > JavaScript

js实现div轮播

2026-01-30 11:08:07JavaScript

实现基础轮播结构

HTML部分需创建一个包含轮播项的容器及导航按钮:

<div class="slider-container">
  <div class="slider-track">
    <div class="slide-item">Slide 1</div>
    <div class="slide-item">Slide 2</div>
    <div class="slide-item">Slide 3</div>
  </div>
  <button class="prev-btn">❮</button>
  <button class="next-btn">❯</button>
</div>

CSS部分设置布局与动画效果:

js实现div轮播

.slider-container {
  position: relative;
  width: 600px;
  height: 300px;
  overflow: hidden;
}
.slider-track {
  display: flex;
  transition: transform 0.5s ease;
}
.slide-item {
  min-width: 100%;
  height: 100%;
  background: #f0f0f0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
}
button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
}
.prev-btn { left: 10px; }
.next-btn { right: 10px; }

核心JavaScript逻辑

初始化变量并实现滑动功能:

js实现div轮播

const track = document.querySelector('.slider-track');
const slides = Array.from(document.querySelectorAll('.slide-item'));
const nextBtn = document.querySelector('.next-btn');
const prevBtn = document.querySelector('.prev-btn');

let currentIndex = 0;
const slideWidth = slides[0].getBoundingClientRect().width;

const updateSlidePosition = () => {
  track.style.transform = `translateX(-${currentIndex * slideWidth}px)`;
};

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

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

自动轮播功能

添加定时自动切换功能:

let autoSlideInterval;

const startAutoSlide = (interval = 3000) => {
  autoSlideInterval = setInterval(() => {
    currentIndex = (currentIndex + 1) % slides.length;
    updateSlidePosition();
  }, interval);
};

const stopAutoSlide = () => {
  clearInterval(autoSlideInterval);
};

// 鼠标悬停时暂停轮播
track.parentElement.addEventListener('mouseenter', stopAutoSlide);
track.parentElement.addEventListener('mouseleave', () => startAutoSlide());

// 初始化自动轮播
startAutoSlide();

无限循环优化

克隆首尾元素实现无缝循环:

const setupInfiniteSlide = () => {
  const firstClone = slides[0].cloneNode(true);
  const lastClone = slides[slides.length - 1].cloneNode(true);

  track.appendChild(firstClone);
  track.insertBefore(lastClone, slides[0]);

  track.style.transform = `translateX(-${slideWidth}px)`;
};

setupInfiniteSlide();

// 修改切换逻辑处理克隆节点
nextBtn.addEventListener('click', () => {
  if (currentIndex >= slides.length - 1) return;
  currentIndex++;
  updateSlidePosition();
});

track.addEventListener('transitionend', () => {
  if (slides[currentIndex].classList.contains('clone')) {
    track.style.transition = 'none';
    currentIndex = currentIndex === 0 ? slides.length - 2 : 1;
    updateSlidePosition();
    setTimeout(() => track.style.transition = 'transform 0.5s ease');
  }
});

标签: jsdiv
分享给朋友:

相关文章

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js图片轮播的实现

js图片轮播的实现

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

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js 实现图片 放大

js 实现图片 放大

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