DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> html5構建觸屏網站之touch事件介紹
html5構建觸屏網站之touch事件介紹
編輯:HTML5詳解     
前言 
一個觸屏網站到底和傳統的pc端網站有什麼區別呢,交互方式的改變首當其沖。例如我們常用的click事件,在觸屏設備下是如此無力。 
手機上的大部分交互都是通過touch來實現的,於是,對於觸屏的交互式網站,觸摸事件是相當重要的。 
Apple在iOS 2.0中引入了觸摸事件API,android正迎頭趕上這一事實標准,縮小差距。最近一個W3C工作組正合力制定這一觸摸事件規范。 

規范 
這裡我們介紹幾種普及得比較好的觸摸事件,你可以在絕大多數現代浏覽器中來測試這一事件(必須是觸屏設備哦): 
touchstart:觸摸開始的時候觸發 
touchmove:手指在屏幕上滑動的時候觸發 
touchend:觸摸結束的時候觸發 
而每個觸摸事件都包括了三個觸摸列表,每個列表裡包含了對應的一系列觸摸點(用來實現多點觸控): 
touches:當前位於屏幕上的所有手指的列表。 
targetTouches:位於當前DOM元素上手指的列表。 
changedTouches:涉及當前事件手指的列表。 
每個觸摸點由包含了如下觸摸信息(常用): 
identifIEr:一個數值,唯一標識觸摸會話(touch session)中的當前手指。一般為從0開始的流水號(android4.1,uc) 
target:DOM元素,是動作所針對的目標。 
pageX/pageX/clientX/clientY/screenX/screenY:一個數值,動作在屏幕上發生的位置(page包含滾動距離,clIEnt不包含滾動距離,screen則以屏幕為基准)。  
radiusX/radiusY/rotationAngle:畫出大約相當於手指形狀的橢圓形,分別為橢圓形的兩個半徑和旋轉角度。初步測試浏覽器不支持,好在功能不常用,歡迎大家反饋。 
有了這些信息,我們就可以依據這些事件信息為用戶提供不同的反饋了。 

下面,我將為大家展示一個小demo,用touchmove實現的單指拖動

復制代碼代碼如下:www.mb5u.com
/*單指拖動*/ 
var obj = document.getElementById('id'); 
obj.addEventListener('touchmove', function(event) { 
// 如果這個元素的位置內只有一個手指的話 
if (event.targetTouches.length == 1) { 
     event.preventDefault();// 阻止浏覽器默認事件,重要 
var touch = event.targetTouches[0]; 
// 把元素放在手指所在的位置 
obj.style.left = touch.pageX-50 + 'px'; 
obj.style.top = touch.pageY-50 + 'px'; 

}, false); 

關於a標簽四個偽類在觸屏設備中的小技巧: 
我們都知道a標簽的四個偽類link,visited,active,hover是專為click事件設計的,所以在觸屏網站中盡量不要使用它們。經測試大部分也是不可用的。但是這裡有一個關於hover的小技巧,當你點擊過一個按鈕之後,這個按鈕就會一直處於hover的狀態,此時你基於這個偽類所設置的CSS也是起作用的,直到你用手指點擊另外一個按鈕,hover狀態就會轉移到另一個按鈕。利用這一點,我們可以做出一些小效果。此技巧在大多數浏覽器中還是可用的。 

理想很豐滿,現實很骨感! 
雖然w3c為多點觸控做好了准備,遺憾的是鮮有浏覽器支持多點觸控的特性,尤其是android平台上的浏覽器,也就讓上文介紹的手指列表變為了空談,捕獲兩個觸摸點會直接導致觸摸失效!好在iOS設備自帶的safari浏覽器能夠支持這一特性,讓我們對未來充滿希望。畢竟,我們被鼠標的單點操作禁锢了太久,多指操作一個網站是多麼令人興奮!
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved