当前位置:首页 > JavaScript

js 实现图片切换

2026-02-02 15:33:29JavaScript

使用纯 JavaScript 实现图片切换

通过监听事件和操作 DOM 元素实现图片切换功能。以下是一个基础实现示例:

// 获取 DOM 元素
const images = document.querySelectorAll('.image-container img');
const prevBtn = document.getElementById('prev');
const nextBtn = document.getElementById('next');
let currentIndex = 0;

// 显示当前图片
function showImage(index) {
  images.forEach((img, i) => {
    img.style.display = i === index ? 'block' : 'none';
  });
}

// 上一张图片
prevBtn.addEventListener('click', () => {
  currentIndex = (currentIndex - 1 + images.length) % images.length;
  showImage(currentIndex);
});

// 下一张图片
nextBtn.addEventListener('click', () => {
  currentIndex = (currentIndex + 1) % images.length;
  showImage(currentIndex);
});

// 初始化显示第一张图片
showImage(0);

添加过渡动画效果

通过 CSS 过渡属性实现平滑切换效果:

js 实现图片切换

.image-container img {
  transition: opacity 0.5s ease;
  opacity: 0;
  position: absolute;
}

.image-container img.active {
  opacity: 1;
}

更新 JavaScript 代码:

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

自动轮播功能

添加定时器实现自动轮播:

js 实现图片切换

let slideInterval;

function startSlideshow() {
  slideInterval = setInterval(() => {
    currentIndex = (currentIndex + 1) % images.length;
    showImage(currentIndex);
  }, 3000);
}

function stopSlideshow() {
  clearInterval(slideInterval);
}

// 鼠标悬停时暂停轮播
document.querySelector('.image-container').addEventListener('mouseenter', stopSlideshow);
document.querySelector('.image-container').addEventListener('mouseleave', startSlideshow);

// 初始化
showImage(0);
startSlideshow();

缩略图导航

添加缩略图点击切换功能:

const thumbnails = document.querySelectorAll('.thumbnail');

thumbnails.forEach((thumb, index) => {
  thumb.addEventListener('click', () => {
    currentIndex = index;
    showImage(currentIndex);
  });
});

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

  images[index].classList.add('active');
  thumbnails[index].classList.add('active');
}

响应式图片切换

根据窗口大小调整图片显示:

function resizeHandler() {
  const container = document.querySelector('.image-container');
  const containerWidth = container.offsetWidth;

  images.forEach(img => {
    img.style.width = `${containerWidth}px`;
    img.style.height = 'auto';
  });
}

window.addEventListener('resize', resizeHandler);
resizeHandler();

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

相关文章

js 实现vue

js 实现vue

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

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

vue实现图片编辑

vue实现图片编辑

Vue实现图片编辑的方法 使用第三方库vue-cropper 安装vue-cropper库: npm install vue-cropperjs 在Vue组件中使用: <template&g…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…