当前位置:首页 > JavaScript

js实现焦点轮播图

2026-01-30 16:06:16JavaScript

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

轮播图的核心逻辑是通过定时切换图片的显示状态,结合用户交互(如点击焦点按钮)实现手动切换。以下是基于原生JavaScript的实现方法。

HTML结构

创建一个包含图片容器和焦点按钮的基础结构:

<div class="slider">
  <div class="slider-container">
    <img src="image1.jpg" class="active">
    <img src="image2.jpg">
    <img src="image3.jpg">
  </div>
  <div class="indicator">
    <span class="dot active"></span>
    <span class="dot"></span>
    <span class="dot"></span>
  </div>
</div>

CSS样式

设置基本布局和过渡效果:

.slider {
  position: relative;
  width: 600px;
  height: 400px;
  overflow: hidden;
}
.slider-container img {
  position: absolute;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 1s;
}
.slider-container img.active {
  opacity: 1;
}
.indicator {
  position: absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
}
.dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin: 0 5px;
  border-radius: 50%;
  background: rgba(255,255,255,0.5);
  cursor: pointer;
}
.dot.active {
  background: white;
}

JavaScript逻辑

初始化变量

const container = document.querySelector('.slider-container');
const images = document.querySelectorAll('.slider-container img');
const dots = document.querySelectorAll('.dot');
let currentIndex = 0;
let timer = null;

图片切换函数

function showImage(index) {
  images.forEach(img => img.classList.remove('active'));
  dots.forEach(dot => dot.classList.remove('active'));

  images[index].classList.add('active');
  dots[index].classList.add('active');
  currentIndex = index;
}

自动轮播功能

function startAutoPlay() {
  timer = setInterval(() => {
    const nextIndex = (currentIndex + 1) % images.length;
    showImage(nextIndex);
  }, 3000);
}

function stopAutoPlay() {
  clearInterval(timer);
}

焦点按钮事件绑定

dots.forEach((dot, index) => {
  dot.addEventListener('click', () => {
    stopAutoPlay();
    showImage(index);
    startAutoPlay();
  });
});

初始化轮播

showImage(0);
startAutoPlay();

// 鼠标悬停暂停
container.addEventListener('mouseenter', stopAutoPlay);
container.addEventListener('mouseleave', startAutoPlay);

完整代码示例

将所有代码整合后形成完整实现:

js实现焦点轮播图

document.addEventListener('DOMContentLoaded', function() {
  const container = document.querySelector('.slider-container');
  const images = document.querySelectorAll('.slider-container img');
  const dots = document.querySelectorAll('.dot');
  let currentIndex = 0;
  let timer = null;

  function showImage(index) {
    images.forEach(img => img.classList.remove('active'));
    dots.forEach(dot => dot.classList.remove('active'));
    images[index].classList.add('active');
    dots[index].classList.add('active');
    currentIndex = index;
  }

  function startAutoPlay() {
    timer = setInterval(() => {
      const nextIndex = (currentIndex + 1) % images.length;
      showImage(nextIndex);
    }, 3000);
  }

  function stopAutoPlay() {
    clearInterval(timer);
  }

  dots.forEach((dot, index) => {
    dot.addEventListener('click', () => {
      stopAutoPlay();
      showImage(index);
      startAutoPlay();
    });
  });

  showImage(0);
  startAutoPlay();

  container.addEventListener('mouseenter', stopAutoPlay);
  container.addEventListener('mouseleave', startAutoPlay);
});

扩展功能建议

  • 添加左右箭头导航
  • 实现无限循环滑动效果
  • 增加触摸滑动支持(移动端)
  • 添加过渡动画效果(如淡入淡出、滑动等)
  • 响应式布局适配不同屏幕尺寸

通过以上代码可实现一个基础的焦点轮播图,可根据实际需求进一步扩展功能。核心要点在于通过CSS控制显示状态,JavaScript管理切换逻辑,并处理好用户交互与自动播放的关系。

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

相关文章

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现日历

js实现日历

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

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…