当前位置:首页 > JavaScript

js图片轮播的实现

2026-02-28 21:22:52JavaScript

基础轮播实现

使用HTML结构创建轮播容器和图片列表:

<div class="slider">
  <div class="slides">
    <img src="image1.jpg" alt="Image 1">
    <img src="image2.jpg" alt="Image 2">
    <img src="image3.jpg" alt="Image 3">
  </div>
</div>

CSS样式设置基础布局:

.slider {
  width: 600px;
  height: 400px;
  overflow: hidden;
  position: relative;
}

.slides {
  display: flex;
  width: 300%;
  height: 100%;
  transition: transform 0.5s ease;
}

.slides img {
  width: 600px;
  height: 100%;
  object-fit: cover;
}

JavaScript实现自动轮播功能:

let currentSlide = 0;
const slides = document.querySelector('.slides');
const totalSlides = document.querySelectorAll('.slides img').length;

function nextSlide() {
  currentSlide = (currentSlide + 1) % totalSlides;
  slides.style.transform = `translateX(-${currentSlide * 100 / totalSlides}%)`;
}

setInterval(nextSlide, 3000);

添加导航控制

在HTML中添加导航按钮:

<button class="prev">Previous</button>
<button class="next">Next</button>

JavaScript扩展控制功能:

document.querySelector('.next').addEventListener('click', nextSlide);

document.querySelector('.prev').addEventListener('click', () => {
  currentSlide = (currentSlide - 1 + totalSlides) % totalSlides;
  slides.style.transform = `translateX(-${currentSlide * 100 / totalSlides}%)`;
});

指示器实现

添加指示器HTML:

<div class="indicators"></div>

JavaScript动态生成指示器:

const indicators = document.querySelector('.indicators');
for(let i = 0; i < totalSlides; i++) {
  const dot = document.createElement('span');
  dot.classList.add('dot');
  dot.addEventListener('click', () => {
    currentSlide = i;
    updateSlider();
  });
  indicators.appendChild(dot);
}

function updateSlider() {
  slides.style.transform = `translateX(-${currentSlide * 100 / totalSlides}%)`;
  document.querySelectorAll('.dot').forEach((dot, index) => {
    dot.classList.toggle('active', index === currentSlide);
  });
}

响应式处理

添加窗口大小变化监听:

window.addEventListener('resize', () => {
  const sliderWidth = document.querySelector('.slider').clientWidth;
  document.querySelectorAll('.slides img').forEach(img => {
    img.style.width = `${sliderWidth}px`;
  });
});

触摸支持

添加触摸事件处理:

let touchStartX = 0;
let touchEndX = 0;

slides.addEventListener('touchstart', e => {
  touchStartX = e.changedTouches[0].screenX;
});

slides.addEventListener('touchend', e => {
  touchEndX = e.changedTouches[0].screenX;
  if(touchEndX < touchStartX - 50) nextSlide();
  if(touchEndX > touchStartX + 50) {
    currentSlide = (currentSlide - 1 + totalSlides) % totalSlides;
    updateSlider();
  }
});

js图片轮播的实现

标签: 图片js
分享给朋友:

相关文章

css3怎么制作图片

css3怎么制作图片

使用 CSS3 制作图片效果 CSS3 提供了多种方法来处理和美化图片,以下是几种常见的实现方式: 圆角效果 通过 border-radius 属性可以轻松为图片添加圆角: img { bor…

vue实现图片轮播

vue实现图片轮播

Vue 实现图片轮播的方法 使用第三方库(推荐) 安装 vue-awesome-swiper 库,这是基于 Swiper 的 Vue 封装: npm install swiper vue-awes…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…