当前位置:首页 > JavaScript

js原生代码实现 轮播

2026-03-01 03:29:42JavaScript

实现轮播图的基本结构

轮播图通常由HTML、CSS和JavaScript三部分组成。HTML负责结构,CSS负责样式,JavaScript负责交互逻辑。

<div class="slider">
  <div class="slider-container">
    <div class="slide">Slide 1</div>
    <div class="slide">Slide 2</div>
    <div class="slide">Slide 3</div>
  </div>
  <button class="prev">Previous</button>
  <button class="next">Next</button>
</div>
.slider {
  position: relative;
  width: 600px;
  height: 400px;
  margin: 0 auto;
  overflow: hidden;
}

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

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

.slide:nth-child(1) { background: red; }
.slide:nth-child(2) { background: green; }
.slide:nth-child(3) { background: blue; }

.prev, .next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  padding: 10px;
  cursor: pointer;
  z-index: 10;
}

.prev { left: 10px; }
.next { right: 10px; }

实现轮播逻辑

JavaScript部分需要处理轮播的核心逻辑,包括滑动动画和按钮控制。

js原生代码实现 轮播

document.addEventListener('DOMContentLoaded', function() {
  const slider = document.querySelector('.slider');
  const sliderContainer = document.querySelector('.slider-container');
  const slides = document.querySelectorAll('.slide');
  const prevBtn = document.querySelector('.prev');
  const nextBtn = document.querySelector('.next');

  let currentIndex = 0;
  const slideCount = slides.length;

  function updateSlider() {
    sliderContainer.style.transform = `translateX(-${currentIndex * 100}%)`;
  }

  nextBtn.addEventListener('click', function() {
    currentIndex = (currentIndex + 1) % slideCount;
    updateSlider();
  });

  prevBtn.addEventListener('click', function() {
    currentIndex = (currentIndex - 1 + slideCount) % slideCount;
    updateSlider();
  });
});

添加自动轮播功能

为了增强用户体验,可以添加自动轮播功能,定时切换到下一张幻灯片。

let autoSlideInterval;

function startAutoSlide() {
  autoSlideInterval = setInterval(() => {
    currentIndex = (currentIndex + 1) % slideCount;
    updateSlider();
  }, 3000);
}

function stopAutoSlide() {
  clearInterval(autoSlideInterval);
}

// 鼠标悬停时停止自动轮播
slider.addEventListener('mouseenter', stopAutoSlide);
slider.addEventListener('mouseleave', startAutoSlide);

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

添加指示器

指示器可以帮助用户了解当前显示的幻灯片位置。

js原生代码实现 轮播

<div class="indicators"></div>
.indicators {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
}

.indicator {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  margin: 0 5px;
  cursor: pointer;
}

.indicator.active {
  background: white;
}
const indicatorsContainer = document.querySelector('.indicators');

// 创建指示器
function createIndicators() {
  for (let i = 0; i < slideCount; i++) {
    const indicator = document.createElement('div');
    indicator.classList.add('indicator');
    if (i === currentIndex) indicator.classList.add('active');
    indicator.addEventListener('click', () => {
      currentIndex = i;
      updateSlider();
      updateIndicators();
    });
    indicatorsContainer.appendChild(indicator);
  }
}

// 更新指示器状态
function updateIndicators() {
  const indicators = document.querySelectorAll('.indicator');
  indicators.forEach((indicator, index) => {
    if (index === currentIndex) {
      indicator.classList.add('active');
    } else {
      indicator.classList.remove('active');
    }
  });
}

// 在updateSlider中调用updateIndicators
function updateSlider() {
  sliderContainer.style.transform = `translateX(-${currentIndex * 100}%)`;
  updateIndicators();
}

// 初始化时创建指示器
createIndicators();

添加过渡效果

为了提升用户体验,可以添加滑动过渡效果,使轮播更加平滑。

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

响应式设计

为了使轮播图在不同设备上都能正常显示,可以添加响应式设计。

@media (max-width: 768px) {
  .slider {
    width: 100%;
    height: 300px;
  }

  .slide {
    height: 300px;
  }
}

标签: 代码js
分享给朋友:

相关文章

代码实现vue

代码实现vue

安装Vue.js 通过npm或yarn安装Vue.js最新稳定版本。确保已安装Node.js环境。 npm install vue # 或 yarn add vue 创建Vue实例 在HTML文件中…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

vue怎么实现文本代码实现

vue怎么实现文本代码实现

Vue 实现文本代码展示的方法 在 Vue 中展示代码文本通常需要结合语法高亮和格式化的功能,以下是几种常见的实现方式: 使用 <pre> 和 <code> 标签 通过 HT…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…