当前位置:首页 > 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 过渡属性实现平滑切换效果:

.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');
}

自动轮播功能

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

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');
}

响应式图片切换

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

js 实现图片切换

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
分享给朋友:

相关文章

vue实现图片轮播

vue实现图片轮播

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

js实现图表

js实现图表

在JavaScript中实现图表通常使用流行的图表库,以下是几种常见的方法和工具: 使用Chart.js Chart.js是一个简单灵活的库,适合快速生成响应式图表。安装方式包括CDN引入或npm安…

js实现变形

js实现变形

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

js实现游标

js实现游标

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

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…