当前位置:首页 > JavaScript

js实现简单轮播

2026-01-30 21:29:10JavaScript

实现基础轮播效果

使用HTML、CSS和JavaScript创建一个基础的自动轮播效果。HTML结构包含一个容器和多个轮播项,CSS设置样式和布局,JavaScript处理轮播逻辑。

<div class="slider-container">
  <div class="slider">
    <div class="slide">Slide 1</div>
    <div class="slide">Slide 2</div>
    <div class="slide">Slide 3</div>
  </div>
</div>
.slider-container {
  width: 100%;
  overflow: hidden;
  position: relative;
}

.slider {
  display: flex;
  transition: transform 0.5s ease;
}

.slide {
  min-width: 100%;
  height: 300px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 2rem;
  color: white;
}

.slide:nth-child(1) { background: #ff5252; }
.slide:nth-child(2) { background: #4caf50; }
.slide:nth-child(3) { background: #2196f3; }

核心JavaScript代码

实现自动轮播功能,设置定时器切换幻灯片,并在鼠标悬停时暂停轮播。

js实现简单轮播

const slider = document.querySelector('.slider');
const slides = document.querySelectorAll('.slide');
let currentIndex = 0;
let interval;

function startSlider() {
  interval = setInterval(() => {
    currentIndex = (currentIndex + 1) % slides.length;
    slider.style.transform = `translateX(-${currentIndex * 100}%)`;
  }, 3000);
}

function stopSlider() {
  clearInterval(interval);
}

// 初始化轮播
startSlider();

// 鼠标悬停暂停
slider.addEventListener('mouseenter', stopSlider);
slider.addEventListener('mouseleave', startSlider);

添加导航按钮

扩展功能,添加左右导航按钮,允许用户手动控制轮播。

<button class="prev-btn">Previous</button>
<button class="next-btn">Next</button>
const prevBtn = document.querySelector('.prev-btn');
const nextBtn = document.querySelector('.next-btn');

function goToSlide(index) {
  currentIndex = (index + slides.length) % slides.length;
  slider.style.transform = `translateX(-${currentIndex * 100}%)`;
}

prevBtn.addEventListener('click', () => {
  stopSlider();
  goToSlide(currentIndex - 1);
  startSlider();
});

nextBtn.addEventListener('click', () => {
  stopSlider();
  goToSlide(currentIndex + 1);
  startSlider();
});

响应式设计调整

确保轮播在不同屏幕尺寸下正常工作,通过JavaScript动态计算幻灯片宽度。

js实现简单轮播

function updateSlideWidth() {
  const containerWidth = document.querySelector('.slider-container').offsetWidth;
  slides.forEach(slide => {
    slide.style.minWidth = `${containerWidth}px`;
  });
}

window.addEventListener('resize', updateSlideWidth);
updateSlideWidth(); // 初始化时调用

添加指示器

创建幻灯片指示器,显示当前活动幻灯片并提供快速导航。

<div class="indicators"></div>
const indicatorsContainer = document.querySelector('.indicators');

function createIndicators() {
  slides.forEach((_, index) => {
    const indicator = document.createElement('div');
    indicator.classList.add('indicator');
    indicator.addEventListener('click', () => {
      stopSlider();
      goToSlide(index);
      startSlider();
    });
    indicatorsContainer.appendChild(indicator);
  });
  updateIndicators();
}

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

// 在goToSlide函数末尾添加
updateIndicators();

createIndicators();

CSS样式补充

为新增的导航按钮和指示器添加样式。

.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; }

.indicators {
  display: flex;
  justify-content: center;
  margin-top: 10px;
}

.indicator {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ccc;
  margin: 0 5px;
  cursor: pointer;
}

.indicator.active {
  background: #333;
}

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

相关文章

js实现分页

js实现分页

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div c…

js实现图片上传

js实现图片上传

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

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 实现继承

js 实现继承

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