当前位置:首页 > JavaScript

js实现轮播代码

2026-01-15 15:20:37JavaScript

基础轮播实现

使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。

<div class="carousel">
  <div class="carousel-inner">
    <img src="image1.jpg" class="carousel-item active">
    <img src="image2.jpg" class="carousel-item">
    <img src="image3.jpg" class="carousel-item">
  </div>
  <button class="carousel-control prev">❮</button>
  <button class="carousel-control next">❮</button>
</div>

CSS样式设置轮播布局和过渡效果:

.carousel {
  position: relative;
  width: 100%;
  max-width: 600px;
  margin: auto;
  overflow: hidden;
}

.carousel-inner {
  display: flex;
  transition: transform 0.5s ease;
}

.carousel-item {
  min-width: 100%;
  height: 300px;
  object-fit: cover;
}

.carousel-control {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0,0,0,0.5);
  color: white;
  border: none;
  padding: 10px;
  cursor: pointer;
}

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

JavaScript实现轮播逻辑:

js实现轮播代码

const carousel = document.querySelector('.carousel-inner');
const items = document.querySelectorAll('.carousel-item');
const prevBtn = document.querySelector('.prev');
const nextBtn = document.querySelector('.next');
let currentIndex = 0;
const totalItems = items.length;

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

nextBtn.addEventListener('click', () => {
  currentIndex = (currentIndex + 1) % totalItems;
  updateCarousel();
});

prevBtn.addEventListener('click', () => {
  currentIndex = (currentIndex - 1 + totalItems) % totalItems;
  updateCarousel();
});

自动轮播功能

添加自动轮播功能,每隔3秒切换一次图片:

let autoPlayInterval;

function startAutoPlay() {
  autoPlayInterval = setInterval(() => {
    currentIndex = (currentIndex + 1) % totalItems;
    updateCarousel();
  }, 3000);
}

function stopAutoPlay() {
  clearInterval(autoPlayInterval);
}

// 鼠标悬停时暂停自动轮播
carousel.parentElement.addEventListener('mouseenter', stopAutoPlay);
carousel.parentElement.addEventListener('mouseleave', startAutoPlay);

startAutoPlay();

指示器添加

在轮播底部添加指示器小点,显示当前活跃的幻灯片:

js实现轮播代码

<div class="carousel-indicators">
  <span class="indicator active" data-index="0"></span>
  <span class="indicator" data-index="1"></span>
  <span class="indicator" data-index="2"></span>
</div>

CSS样式:

.carousel-indicators {
  display: flex;
  justify-content: center;
  padding: 10px;
}

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

.indicator.active {
  background: #333;
}

JavaScript更新指示器状态:

const indicators = document.querySelectorAll('.indicator');

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

indicators.forEach(indicator => {
  indicator.addEventListener('click', () => {
    currentIndex = parseInt(indicator.dataset.index);
    updateCarousel();
    updateIndicators();
  });
});

// 在updateCarousel函数中添加
updateIndicators();

无限循环优化

修改轮播逻辑实现无缝无限循环:

// 在HTML中克隆第一个和最后一个元素
const firstClone = items[0].cloneNode(true);
const lastClone = items[totalItems - 1].cloneNode(true);
carousel.appendChild(firstClone);
carousel.insertBefore(lastClone, items[0]);

// 更新变量和函数
items = document.querySelectorAll('.carousel-item');
totalItems = items.length;
currentIndex = 1; // 从克隆后的第一个真实项目开始

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

  // 检查是否到达克隆项,重置位置
  if (currentIndex === totalItems - 1) {
    setTimeout(() => {
      carousel.style.transition = 'none';
      currentIndex = 1;
      updateCarousel();
      setTimeout(() => carousel.style.transition = 'transform 0.5s ease');
    }, 500);
  } else if (currentIndex === 0) {
    setTimeout(() => {
      carousel.style.transition = 'none';
      currentIndex = totalItems - 2;
      updateCarousel();
      setTimeout(() => carousel.style.transition = 'transform 0.5s ease');
    }, 500);
  }
}

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

相关文章

vue实现通讯录代码

vue实现通讯录代码

实现思路 Vue实现通讯录的核心在于数据管理和组件交互。通常需要包含联系人列表、搜索功能、分组索引以及添加/编辑功能。 基本结构 创建Vue组件时需包含以下部分: 数据模型:存储联系人数组 字…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback)…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…