当前位置:首页 > JavaScript

js实现图片滑动

2026-03-01 01:11:44JavaScript

实现图片滑动效果

使用JavaScript实现图片滑动效果可以通过多种方式完成,以下是几种常见的方法:

使用CSS和JavaScript结合实现滑动

通过CSS设置容器和图片样式,JavaScript处理滑动逻辑:

const slider = document.querySelector('.slider');
const images = document.querySelectorAll('.slider img');
let currentIndex = 0;

function slideTo(index) {
    slider.style.transform = `translateX(-${index * 100}%)`;
}

document.querySelector('.next').addEventListener('click', () => {
    currentIndex = (currentIndex + 1) % images.length;
    slideTo(currentIndex);
});

document.querySelector('.prev').addEventListener('click', () => {
    currentIndex = (currentIndex - 1 + images.length) % images.length;
    slideTo(currentIndex);
});

对应的CSS样式:

.slider {
    display: flex;
    transition: transform 0.5s ease;
    width: 100%;
}

.slider img {
    width: 100%;
    flex-shrink: 0;
}

使用Swiper.js库

Swiper是一个流行的滑动库,可以轻松实现各种滑动效果:

import Swiper from 'swiper';
import 'swiper/css';

const swiper = new Swiper('.swiper', {
    loop: true,
    navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
    },
    pagination: {
        el: '.swiper-pagination',
    },
});

HTML结构:

<div class="swiper">
    <div class="swiper-wrapper">
        <div class="swiper-slide"><img src="image1.jpg"></div>
        <div class="swiper-slide"><img src="image2.jpg"></div>
        <div class="swiper-slide"><img src="image3.jpg"></div>
    </div>
    <div class="swiper-pagination"></div>
    <div class="swiper-button-next"></div>
    <div class="swiper-button-prev"></div>
</div>

实现自动轮播

在基础滑动上添加自动轮播功能:

let intervalId;
const delay = 3000;

function startAutoSlide() {
    intervalId = setInterval(() => {
        currentIndex = (currentIndex + 1) % images.length;
        slideTo(currentIndex);
    }, delay);
}

function stopAutoSlide() {
    clearInterval(intervalId);
}

slider.addEventListener('mouseenter', stopAutoSlide);
slider.addEventListener('mouseleave', startAutoSlide);

startAutoSlide();

添加触摸支持

为移动设备添加触摸事件支持:

let touchStartX = 0;
let touchEndX = 0;

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

slider.addEventListener('touchend', (e) => {
    touchEndX = e.changedTouches[0].screenX;
    handleSwipe();
});

function handleSwipe() {
    if (touchEndX < touchStartX) {
        // 向左滑动,显示下一张
        currentIndex = (currentIndex + 1) % images.length;
        slideTo(currentIndex);
    }
    if (touchEndX > touchStartX) {
        // 向右滑动,显示上一张
        currentIndex = (currentIndex - 1 + images.length) % images.length;
        slideTo(currentIndex);
    }
}

添加过渡效果

使用CSS添加平滑过渡效果:

js实现图片滑动

.slider {
    transition: transform 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
}

这些方法可以根据具体需求进行组合和调整,实现不同风格的图片滑动效果。

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

相关文章

js 实现vue

js 实现vue

实现 Vue 的核心功能 在 JavaScript 中实现 Vue 的核心功能需要模拟数据绑定、虚拟 DOM 和响应式系统。以下是一个简化版的实现思路: 响应式系统 通过 Object.define…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现图片放大缩小

js实现图片放大缩小

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

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…