JavaScript 触摸滑动是一种常见的前端交互技术,它允许用户通过触摸屏幕来滑动页面或元素。以下是关于 JavaScript 触摸滑动的基础概念、优势、类型、应用场景以及常见问题及解决方法。
触摸滑动主要依赖于以下几个事件:
touchstart
:当手指触摸屏幕时触发。touchmove
:当手指在屏幕上移动时触发。touchend
:当手指从屏幕上抬起时触发。以下是一个简单的水平滑动示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Touch Slider</title>
<style>
#slider {
width: 100%;
overflow: hidden;
white-space: nowrap;
position: relative;
}
.slide {
display: inline-block;
width: 100%;
height: 200px;
background-color: #ccc;
margin-right: -100%;
}
</style>
</head>
<body>
<div id="slider">
<div class="slide" style="background-color: red;"></div>
<div class="slide" style="background-color: green;"></div>
<div class="slide" style="background-color: blue;"></div>
</div>
<script>
const slider = document.getElementById('slider');
let startX = 0;
let currentTranslate = 0;
let prevTranslate = 0;
let animationID = 0;
let currentIndex = 0;
slider.addEventListener('touchstart', touchStart);
slider.addEventListener('touchmove', touchMove);
slider.addEventListener('touchend', touchEnd);
function touchStart(event) {
startX = event.touches[0].clientX;
cancelAnimationFrame(animationID);
}
function touchMove(event) {
const currentX = event.touches[0].clientX;
currentTranslate = prevTranslate + currentX - startX;
}
function touchEnd() {
const movedBy = currentTranslate - prevTranslate;
if (movedBy < -100 && currentIndex < 2) currentIndex += 1;
if (movedBy > 100 && currentIndex > 0) currentIndex -= 1;
prevTranslate = currentTranslate;
setSliderPosition();
}
function setSliderPosition() {
slider.style.transform = `translateX(${currentIndex * -100}%)`;
}
</script>
</body>
</html>
requestAnimationFrame
来优化动画性能,减少 DOM 操作。event.preventDefault()
来阻止默认行为。event.touches
数组来获取所有触摸点的信息,并根据具体需求编写相应的逻辑。通过以上内容,你应该对 JavaScript 触摸滑动有了全面的了解,并能够在实际项目中应用这些知识。
领取专属 10元无门槛券
手把手带您无忧上云