简单实现下拉回弹效果

823 阅读1分钟

实现下拉回弹效果是一种在移动设备上常见的交互体验,可以通过一些简单的HTML、CSS和JavaScript代码来实现。下面是一个基本的示例,演示如何实现一个简单的下拉回弹效果:

HTML 结构:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>下拉回弹效果</title>
</head>
<body>
    <div class="container" id="container">
        <div class="content" id="content">
            <div class="refresh-text" id="refreshText">下拉刷新</div>
            <ul>
                <li>Item 1</li>
                <li>Item 2</li>
                <li>Item 3</li>
                <!-- 更多列表项... -->
            </ul>
        </div>
    </div>
    <script src="script.js"></script>
</body>
</html>

CSS 样式(styles.css):

body {
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif;
}

.container {
    overflow: hidden;
    height: 100vh;
}

.content {
    transform: translate3d(0, 0, 0);
    transition: transform 0.3s ease-out;
    overflow: auto;
    height: 100%;
}

ul {
    list-style: none;
    padding: 0;
    margin: 0;
    background-color: #f0f0f0;
    border-top: 1px solid #ddd;
}

li {
    padding: 16px;
    border-bottom: 1px solid #ccc;
}

JavaScript 逻辑(script.js):

const container = document.getElementById('container');
const content = document.getElementById('content');
const refreshText = document.getElementById('refreshText');
let startY = 0;

content.addEventListener('touchstart', e => {
    startY = e.touches[0].clientY;
});

content.addEventListener('touchmove', e => {
    const currentY = e.touches[0].clientY;
    const deltaY = currentY - startY;

    if (deltaY > 0 && content.scrollTop === 0) {
        e.preventDefault();
        content.style.transform = `translate3d(0, ${deltaY}px, 0)`;
        refreshText.innerHTML = deltaY > 80 ? '释放刷新' : '下拉刷新';
    }
});

content.addEventListener('touchend', () => {
    if (content.style.transform !== 'translate3d(0, 0, 0)') {
        content.style.transform = 'translate3d(0, 0, 0)';
        refreshText.innerHTML = '下拉刷新';
    }
});

这个示例使用了 HTML、CSS 和 JavaScript 来创建一个具有下拉回弹效果的简单列表。通过监听触摸事件,当用户下拉时,内容区域会产生位移,模拟出下拉的回弹效果。你可以根据需要调整样式和交互逻辑,以创建更复杂的下拉回弹效果。