| |
<!DOCTYPE html> |
| |
<html lang="en"> |
| |
<head> |
| |
<meta charset="UTF-8"> |
| |
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> |
| |
<title>Document</title> |
| |
<style> |
| |
div{ |
| |
width: 100px; |
| |
height: 200px; |
| |
background-color: #0f0; |
| |
} |
| |
</style> |
| |
</head> |
| |
<body> |
| |
<div></div> |
| |
<script> |
| |
// 1. 获取div |
| |
var div = document.querySelector('div'); |
| |
// 2. 获取手指开始的Y的位置 |
| |
// 3. 获取手指滑动中的时候Y的位置 |
| |
// 4. 用滑动中的Y位置 - 开始Y的位置 = 手指移动的距离 |
| |
// 5. 把手指移动距离设置给div的位移 |
| |
// 开始的Y 滑动中的Y 滑动距离Y 当前的位置 |
| |
var startY = moveY = distanceY = currentY = 0; |
| |
div.addEventListener('touchstart', function (e) { |
| |
startY = e.touches[0].clientY; |
| |
}); |
| |
div.addEventListener('touchmove', function (e) { |
| |
moveY = e.touches[0].clientY; |
| |
distanceY = moveY - startY; |
| |
// console.log('startY'+startY); |
| |
// console.log('moveY'+moveY); |
| |
// console.log('distanceY'+distanceY); |
| |
// 把距离设置给div的位移 注意带单位(currentY+distanceY) 加上之前的位置和当前滑动的距离 最终位移 带括号 |
| |
div.style.transform = 'translateY('+(currentY+distanceY)+'px)'; |
| |
}); |
| |
// 当 松开手的时候 把之前div已经移动到位置作为下一次起点 |
| |
div.addEventListener('touchend', function (e) { |
| |
//当前的位置 += 之前所有的距离的和 |
| |
currentY += distanceY; |
| |
}); |
| |
</script> |
| |
</body> |
| |
</html> |