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

js 实现轮播

2026-01-31 16:44:38JavaScript

实现基础轮播效果

使用HTML结构搭建轮播容器,包含图片列表和导航按钮:

<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>

CSS样式控制轮播布局和过渡效果:

.slider {
  position: relative;
  width: 500px;
  overflow: hidden;
}
.slides {
  display: flex;
  transition: transform 0.5s ease;
}
.slide {
  min-width: 100%;
}
.slide.active {
  display: block;
}
button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}
.prev { left: 10px; }
.next { right: 10px; }

JavaScript实现核心轮播逻辑:

let currentSlide = 0;
const slides = document.querySelectorAll('.slide');
const totalSlides = slides.length;

function showSlide(index) {
  slides.forEach(slide => slide.classList.remove('active'));
  currentSlide = (index + totalSlides) % totalSlides;
  slides[currentSlide].classList.add('active');
  document.querySelector('.slides').style.transform = 
    `translateX(-${currentSlide * 100}%)`;
}

document.querySelector('.next').addEventListener('click', () => {
  showSlide(currentSlide + 1);
});

document.querySelector('.prev').addEventListener('click', () => {
  showSlide(currentSlide - 1);
});

添加自动轮播功能

扩展JavaScript代码实现定时自动播放:

let slideInterval = setInterval(() => {
  showSlide(currentSlide + 1);
}, 3000);

// 鼠标悬停暂停轮播
document.querySelector('.slider').addEventListener('mouseenter', () => {
  clearInterval(slideInterval);
});

// 鼠标离开恢复轮播
document.querySelector('.slider').addEventListener('mouseleave', () => {
  slideInterval = setInterval(() => {
    showSlide(currentSlide + 1);
  }, 3000);
});

添加指示器导航

HTML添加指示器元素:

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

JavaScript动态生成指示器并添加交互:

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

// 创建指示器
slides.forEach((_, index) => {
  const dot = document.createElement('span');
  dot.classList.add('indicator');
  if(index === 0) dot.classList.add('active');
  dot.addEventListener('click', () => showSlide(index));
  indicators.appendChild(dot);
});

// 更新指示器状态
function updateIndicators() {
  document.querySelectorAll('.indicator').forEach((dot, index) => {
    dot.classList.toggle('active', index === currentSlide);
  });
}

// 修改showSlide函数
function showSlide(index) {
  // ...原有代码...
  updateIndicators();
}

响应式设计优化

使用CSS媒体查询适配不同屏幕:

@media (max-width: 768px) {
  .slider {
    width: 100%;
  }
  button {
    font-size: 24px;
  }
}

JavaScript动态计算轮播容器宽度:

function initSlider() {
  const sliderWidth = document.querySelector('.slider').offsetWidth;
  document.querySelector('.slides').style.width = 
    `${sliderWidth * totalSlides}px`;
  slides.forEach(slide => {
    slide.style.width = `${sliderWidth}px`;
  });
}

window.addEventListener('resize', initSlider);
initSlider();

js 实现轮播

标签: js
分享给朋友:

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Paren…