<!DOCTYPE html>
<html>
<head>
<title>實現一個觸摸屏幕上可拖拽的正方形</title>
<meta name="viewport" content="width=device-width"/>
<style>
#container {
background-color: black;
height:100px;
width:100px;
position: fixed;
left: 0;
top: 0;
}
</style>
</head>
<body>
<div id="container"></div>
<script>
// 獲取container節點
var container = document.getElementById("container");
var oW,oH;
// 綁定touchstart事件
container.addEventListener("touchstart", function(e) {
var touches = e.touches[0];
objW = touches.clientX - container.offsetLeft;//clientX 事件屬性返回當事件被觸發時鼠標指針向對於瀏覽器頁面(或客戶區)的水平座標
objH = touches.clientY - container.offsetTop;//obj.offsetTop 指 obj 相對於版面或由 offsetParent 屬性指定的父座標的計算上側位置
//阻止頁面的滑動默認事件
document.addEventListener("touchmove",function defaultEvent(e) {
e.preventDefault();
},false);
},false);
// 綁定touchmove事件
container.addEventListener("touchmove", function(e) {
var touches = e.touches[0];
var objLeft = touches.clientX - objW;//objW爲鼠標以物體爲父座標系的水平位置
var objTop = touches.clientY - objH;//objH物體上邊緣距離面板的距離
if(objLeft < 0) {
objLeft = 0;
}else if(objLeft > document.documentElement.clientWidth - container.offsetWidth) { //clientWidth內容可視區域的寬度
objLeft = (document.documentElement.clientWidth - container.offsetWidth);//container.offsetWidth控件自身的絕對寬度
}
if(objTop < 0) {
objTop = 0;
}else if(objTop > document.documentElement.clientHeight - container.offsetHeight) {
objTop = (document.documentElement.clientHeight - container.offsetHeight);//document.documentElement是文檔對象根節點(html)的引用
}
container.style.left = objLeft + "px";
container.style.top = objTop + "px";
},false);
// 綁定touchend事件
container.addEventListener("touchend",function() {
document.removeEventListener("touchmove",function defaultEvent(e) {
e.preventDefault();
},false);
},false);
</script>
</body>
</html>
實現一個觸摸屏幕上可拖拽的正方形
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.