最近作的作那個app的項目因爲用overflow:hidden致使了不少問題,因而決定研究下html5的touch事件。想找個全面點的帖子真是難死了,雖然好多關於html5 touch的文章但大多都是介紹touch事件或者很簡短的小demo。css
下午好生研究了下終於搞出了個比較全面的上下滑動的小demo,代碼比較簡單。html
下面是完整代碼,我把幾個重要的地方作了紅色標記html5
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1 user-scalable=0"/>
<title>2014-4-29</title>
<style>
* {margin: 0; padding: 0;} #outer{ width:90%; height: 490px; background: #000; margin: auto; overflow: hidden;} #inner{width:80%; height: 2000px; background: #f67d42; margin: auto; position:relative; top:0; } </style>
<script src='jquery-1.9.1.min.js'></script>
</head>
<body>
<div id="spText"></div>
<div id="outer">
<div id="inner">
123<br> 123<br> gag<br> af<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> yryyr<br> ryry<br> 123<br> 123<br> 123<br> 123<br> 123<br> sdff<br> fef<br> 123<br> hr<br> hrh<br> 5y<br> 123<br> er<br> ert<br> 123<br> rgdgdg<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gfgfgfgfgfgf<br> sdsdsdsdsdsd<br> sf<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gdggdgdg<br> 123<br> drgdrgd<br> 123<br> 123<br> 123<br> yuyuyuyuyuy<br> hjkhjkhkhkhjkhkh<br> kjkjk<br>123<br> 123<br> gag<br> af<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> yryyr<br> ryry<br> 123<br> 123<br> 123<br> 123<br> 123<br> sdff<br> fef<br> 123<br> hr<br> hrh<br> 5y<br> 123<br> er<br> ert<br> 123<br> rgdgdg<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gfgfgfgfgfgf<br> sdsdsdsdsdsd<br> sf<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> 123<br> gdggdgdg<br> 123<br> drgdrgd<br> 123<br> 123<br> 123<br> yuyuyuyuyuy<br> hjkhjkhkhkhjkhkh<br> kjkjk<br>
</div>
</div>
<script>
var startX,//觸摸時的座標
startY, x, //滑動的距離
y, aboveY=0; //設一個全局變量記錄上一次內部塊滑動的位置
var inner=document.getElementById("inner"); function touchSatrt(e){//觸摸
e.preventDefault(); var touch=e.touches[0]; startY = touch.pageY; //剛觸摸時的座標
} function touchMove(e){//滑動
e.preventDefault(); var touch = e.touches[0]; y = touch.pageY - startY;//滑動的距離
//inner.style.webkitTransform = 'translate(' + 0+ 'px, ' + y + 'px)'; //也能夠用css3的方式
inner.style.top=aboveY+y+"px"; //這一句中的aboveY是inner上次滑動後的位置
} function touchEnd(e){//手指離開屏幕
e.preventDefault(); aboveY=parseInt(inner.style.top);//touch結束後記錄內部滑塊滑動的位置 在全局變量中體現 必定要用parseInt()將其轉化爲整數字;
}// document.getElementById("outer").addEventListener('touchstart', touchSatrt,false); document.getElementById("outer").addEventListener('touchmove', touchMove,false); document.getElementById("outer").addEventListener('touchend', touchEnd,false); </script>
</body>
</html>