当前位置:首页 > JavaScript

js实现滑动相册

2026-04-04 16:10:34JavaScript

实现滑动相册的步骤

使用JavaScript实现滑动相册可以通过监听触摸事件或鼠标事件来实现。以下是两种常见的方法:

方法一:基于触摸事件的滑动相册

监听touchstarttouchmovetouchend事件,计算滑动距离并触发相册切换。

js实现滑动相册

const slider = document.querySelector('.slider');
let startX, moveX;

slider.addEventListener('touchstart', (e) => {
    startX = e.touches[0].clientX;
});

slider.addEventListener('touchmove', (e) => {
    moveX = e.touches[0].clientX;
    const diff = startX - moveX;
    if (diff > 50) {
        // 向右滑动,切换到下一张
        nextSlide();
    } else if (diff < -50) {
        // 向左滑动,切换到上一张
        prevSlide();
    }
});

function nextSlide() {
    // 实现切换到下一张的逻辑
}

function prevSlide() {
    // 实现切换到上一张的逻辑
}

方法二:基于鼠标拖拽的滑动相册

监听mousedownmousemovemouseup事件,实现类似触摸滑动的效果。

js实现滑动相册

const slider = document.querySelector('.slider');
let isDragging = false;
let startX, currentX;

slider.addEventListener('mousedown', (e) => {
    isDragging = true;
    startX = e.clientX;
});

slider.addEventListener('mousemove', (e) => {
    if (!isDragging) return;
    currentX = e.clientX;
    const diff = startX - currentX;
    if (diff > 50) {
        nextSlide();
        isDragging = false;
    } else if (diff < -50) {
        prevSlide();
        isDragging = false;
    }
});

slider.addEventListener('mouseup', () => {
    isDragging = false;
});

使用CSS过渡效果

为相册添加平滑的滑动过渡效果,可以通过CSS的transformtransition属性实现。

.slider {
    display: flex;
    transition: transform 0.3s ease;
}

.slide {
    min-width: 100%;
}

完整示例代码

结合HTML、CSS和JavaScript的完整滑动相册实现。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>滑动相册</title>
    <style>
        .slider-container {
            width: 100%;
            overflow: hidden;
        }
        .slider {
            display: flex;
            transition: transform 0.3s ease;
        }
        .slide {
            min-width: 100%;
            height: 300px;
            background-size: cover;
            background-position: center;
        }
    </style>
</head>
<body>
    <div class="slider-container">
        <div class="slider">
            <div class="slide" style="background-image: url('image1.jpg');"></div>
            <div class="slide" style="background-image: url('image2.jpg');"></div>
            <div class="slide" style="background-image: url('image3.jpg');"></div>
        </div>
    </div>

    <script>
        const slider = document.querySelector('.slider');
        let currentIndex = 0;
        let startX, moveX;

        slider.addEventListener('touchstart', (e) => {
            startX = e.touches[0].clientX;
        });

        slider.addEventListener('touchmove', (e) => {
            moveX = e.touches[0].clientX;
            const diff = startX - moveX;
            if (diff > 50) {
                nextSlide();
            } else if (diff < -50) {
                prevSlide();
            }
        });

        function nextSlide() {
            if (currentIndex < slider.children.length - 1) {
                currentIndex++;
                updateSlider();
            }
        }

        function prevSlide() {
            if (currentIndex > 0) {
                currentIndex--;
                updateSlider();
            }
        }

        function updateSlider() {
            slider.style.transform = `translateX(-${currentIndex * 100}%)`;
        }
    </script>
</body>
</html>

注意事项

  • 确保图片路径正确,否则相册无法显示图片。
  • 滑动阈值(如50像素)可以根据实际需求调整。
  • 如果需要自动播放功能,可以使用setInterval定时切换幻灯片。

标签: 相册js
分享给朋友:

相关文章

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js实现刷新页面

js实现刷新页面

刷新页面的方法 在JavaScript中,可以通过多种方式实现页面刷新。以下是几种常见的方法: 使用 location.reload() 调用 location.reload() 方法可以重新加载当…

js实现同步

js实现同步

同步与异步的概念 在JavaScript中,同步代码会按照顺序执行,每一行代码必须等待上一行代码执行完成后才能运行。异步代码则允许在等待某些操作(如网络请求)完成的同时继续执行其他代码。 实现同步的…

js实现隐藏div

js实现隐藏div

隐藏div的几种方法 使用JavaScript隐藏div元素可以通过多种方式实现,以下是几种常见的方法: 方法一:修改style.display属性 将div的display属性设置为"none"…

vue js 实现排序

vue js 实现排序

Vue.js 实现排序的方法 在 Vue.js 中实现排序可以通过多种方式完成,包括使用计算属性、方法或直接操作数据。以下是几种常见的实现方式: 使用计算属性排序 计算属性可以自动响应数据变化并重新…