当前位置:首页 > JavaScript

js实现焦点轮播图

2026-04-04 07:47:39JavaScript

实现焦点轮播图的核心思路

通过JavaScript控制图片的切换,结合定时器和事件监听实现自动轮播与手动切换功能。核心包括DOM操作、定时器管理、动画效果和事件绑定。

HTML结构

基础的HTML结构需包含轮播容器、图片列表及焦点指示器:

<div class="slider-container">
  <div class="slider-wrapper">
    <img src="image1.jpg" class="slider-item active">
    <img src="image2.jpg" class="slider-item">
    <img src="image3.jpg" class="slider-item">
  </div>
  <div class="slider-dots">
    <span class="dot active" data-index="0"></span>
    <span class="dot" data-index="1"></span>
    <span class="dot" data-index="2"></span>
  </div>
</div>

CSS样式

确保轮播项横向排列并隐藏非活动项:

.slider-container {
  position: relative;
  overflow: hidden;
  width: 600px;
  height: 400px;
}
.slider-wrapper {
  display: flex;
  transition: transform 0.5s ease;
}
.slider-item {
  min-width: 100%;
  opacity: 0;
  position: absolute;
}
.slider-item.active {
  opacity: 1;
}
.slider-dots {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}
.dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #ccc;
  margin: 0 5px;
  cursor: pointer;
}
.dot.active {
  background: #333;
}

JavaScript实现

初始化变量

获取DOM元素并设置初始状态:

const sliderWrapper = document.querySelector('.slider-wrapper');
const sliderItems = document.querySelectorAll('.slider-item');
const dots = document.querySelectorAll('.dot');
let currentIndex = 0;
let timer = null;
const interval = 3000;

自动轮播功能

通过定时器实现自动切换:

function startAutoPlay() {
  timer = setInterval(() => {
    nextSlide();
  }, interval);
}

function stopAutoPlay() {
  clearInterval(timer);
}

切换逻辑

处理图片切换和焦点更新:

function goToSlide(index) {
  sliderItems[currentIndex].classList.remove('active');
  dots[currentIndex].classList.remove('active');

  currentIndex = (index + sliderItems.length) % sliderItems.length;

  sliderItems[currentIndex].classList.add('active');
  dots[currentIndex].classList.add('active');
}

function nextSlide() {
  goToSlide(currentIndex + 1);
}

function prevSlide() {
  goToSlide(currentIndex - 1);
}

事件绑定

为指示器和容器添加交互事件:

dots.forEach(dot => {
  dot.addEventListener('click', function() {
    const dotIndex = parseInt(this.getAttribute('data-index'));
    goToSlide(dotIndex);
  });
});

sliderWrapper.addEventListener('mouseenter', stopAutoPlay);
sliderWrapper.addEventListener('mouseleave', startAutoPlay);

初始化启动

页面加载后开始轮播:

window.addEventListener('DOMContentLoaded', () => {
  startAutoPlay();
});

完整代码示例

将所有部分组合后的完整实现:

js实现焦点轮播图

document.addEventListener('DOMContentLoaded', function() {
  const sliderWrapper = document.querySelector('.slider-wrapper');
  const sliderItems = document.querySelectorAll('.slider-item');
  const dots = document.querySelectorAll('.dot');
  let currentIndex = 0;
  let timer = null;
  const interval = 3000;

  function updateSlide() {
    sliderItems.forEach((item, index) => {
      item.classList.toggle('active', index === currentIndex);
    });
    dots.forEach((dot, index) => {
      dot.classList.toggle('active', index === currentIndex);
    });
  }

  function goToSlide(index) {
    currentIndex = (index + sliderItems.length) % sliderItems.length;
    updateSlide();
  }

  function startAutoPlay() {
    timer = setInterval(() => goToSlide(currentIndex + 1), interval);
  }

  function stopAutoPlay() {
    clearInterval(timer);
  }

  dots.forEach(dot => {
    dot.addEventListener('click', () => {
      const dotIndex = parseInt(dot.getAttribute('data-index'));
      goToSlide(dotIndex);
    });
  });

  sliderWrapper.addEventListener('mouseenter', stopAutoPlay);
  sliderWrapper.addEventListener('mouseleave', startAutoPlay);

  startAutoPlay();
});

扩展功能建议

  • 添加过渡动画效果:使用CSS transition或animation实现渐变/滑动效果
  • 响应式适配:通过resize事件监听调整轮播尺寸
  • 触摸支持:添加touchstart/touchmove事件处理移动端滑动
  • 无限循环:克隆首尾元素实现无缝滚动
  • 懒加载:对未显示的图片延迟加载

以上实现提供了轮播图的核心功能,可根据实际需求进行扩展和样式调整。

标签: 焦点js
分享给朋友:

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…