仿QQ滑动删除是一种常见的用户界面交互设计,允许用户通过在列表项上滑动来触发删除操作。这种设计通常用于移动应用中,提供了一种直观且高效的方式来管理列表项。
以下是一个简单的JavaScript示例,展示如何实现左滑删除功能:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Swipe to Delete</title>
<style>
.list-item {
position: relative;
padding: 15px;
border-bottom: 1px solid #ccc;
transition: transform 0.3s ease;
}
.delete-btn {
position: absolute;
right: 0;
top: 0;
bottom: 0;
width: 100px;
background-color: red;
color: white;
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<div class="list-container">
<div class="list-item" data-id="1">
Item 1
<div class="delete-btn">Delete</div>
</div>
<div class="list-item" data-id="2">
Item 2
<div class="delete-btn">Delete</div>
</div>
</div>
<script>
const listItems = document.querySelectorAll('.list-item');
listItems.forEach(item => {
let startX, startY, dist;
item.addEventListener('touchstart', e => {
startX = e.touches[0].clientX;
startY = e.touches[0].clientY;
});
item.addEventListener('touchmove', e => {
const touch = e.touches[0];
dist = touch.clientX - startX;
if (Math.abs(dist) > 50) {
e.preventDefault();
item.style.transform = `translateX(${dist}px)`;
}
});
item.addEventListener('touchend', () => {
if (dist < -50) {
item.style.transform = 'translateX(-100px)';
} else {
item.style.transform = '';
}
});
item.querySelector('.delete-btn').addEventListener('click', () => {
item.remove();
});
});
</script>
</body>
</html>通过以上方法,可以有效实现仿QQ滑动删除功能,并解决常见的实现问题。
没有搜到相关的文章