html5構(gòu)建觸屏網(wǎng)站之touch事件介紹_HTML5教程
推薦:html5 Canvas畫圖教程(8)—canvas里畫曲線之bezierCurveTo方法arc,arcTo以及quadraticCurveTo.他們都有一個(gè)共同點(diǎn),就是他們畫的曲線都只能偏向一邊,今天講的bezierCurveTo與他們最大的不同點(diǎn)就是有兩個(gè)控制點(diǎn),即可以畫出S形的曲線了,感興趣的朋友可以了解下哦
前言一個(gè)觸屏網(wǎng)站到底和傳統(tǒng)的pc端網(wǎng)站有什么區(qū)別呢,交互方式的改變首當(dāng)其沖。例如我們常用的click事件,在觸屏設(shè)備下是如此無(wú)力。
手機(jī)上的大部分交互都是通過(guò)touch來(lái)實(shí)現(xiàn)的,于是,對(duì)于觸屏的交互式網(wǎng)站,觸摸事件是相當(dāng)重要的。
Apple在iOS 2.0中引入了觸摸事件API,Android正迎頭趕上這一事實(shí)標(biāo)準(zhǔn),縮小差距。最近一個(gè)W3C工作組正合力制定這一觸摸事件規(guī)范。
規(guī)范
這里我們介紹幾種普及得比較好的觸摸事件,你可以在絕大多數(shù)現(xiàn)代瀏覽器中來(lái)測(cè)試這一事件(必須是觸屏設(shè)備哦):
touchstart:觸摸開(kāi)始的時(shí)候觸發(fā)
touchmove:手指在屏幕上滑動(dòng)的時(shí)候觸發(fā)
touchend:觸摸結(jié)束的時(shí)候觸發(fā)
而每個(gè)觸摸事件都包括了三個(gè)觸摸列表,每個(gè)列表里包含了對(duì)應(yīng)的一系列觸摸點(diǎn)(用來(lái)實(shí)現(xiàn)多點(diǎn)觸控):
touches:當(dāng)前位于屏幕上的所有手指的列表。
targetTouches:位于當(dāng)前DOM元素上手指的列表。
changedTouches:涉及當(dāng)前事件手指的列表。
每個(gè)觸摸點(diǎn)由包含了如下觸摸信息(常用):
identifier:一個(gè)數(shù)值,唯一標(biāo)識(shí)觸摸會(huì)話(touch session)中的當(dāng)前手指。一般為從0開(kāi)始的流水號(hào)(android4.1,uc)
target:DOM元素,是動(dòng)作所針對(duì)的目標(biāo)。
pageX/pageX/clientX/clientY/screenX/screenY:一個(gè)數(shù)值,動(dòng)作在屏幕上發(fā)生的位置(page包含滾動(dòng)距離,client不包含滾動(dòng)距離,screen則以屏幕為基準(zhǔn))。
radiusX/radiusY/rotationAngle:畫出大約相當(dāng)于手指形狀的橢圓形,分別為橢圓形的兩個(gè)半徑和旋轉(zhuǎn)角度。初步測(cè)試瀏覽器不支持,好在功能不常用,歡迎大家反饋。
有了這些信息,我們就可以依據(jù)這些事件信息為用戶提供不同的反饋了。
下面,我將為大家展示一個(gè)小demo,用touchmove實(shí)現(xiàn)的單指拖動(dòng):
復(fù)制代碼 代碼如下:m.dounai2.com
/*單指拖動(dòng)*/
var obj = document.getElementById('id');
obj.addEventListener('touchmove', function(event) {
// 如果這個(gè)元素的位置內(nèi)只有一個(gè)手指的話
if (event.targetTouches.length == 1) {
event.preventDefault();// 阻止瀏覽器默認(rèn)事件,重要
var touch = event.targetTouches[0];
// 把元素放在手指所在的位置
obj.style.left = touch.pageX-50 + 'px';
obj.style.top = touch.pageY-50 + 'px';
}
}, false);
關(guān)于a標(biāo)簽四個(gè)偽類在觸屏設(shè)備中的小技巧:
我們都知道a標(biāo)簽的四個(gè)偽類link,visited,active,hover是專為click事件設(shè)計(jì)的,所以在觸屏網(wǎng)站中盡量不要使用它們。經(jīng)測(cè)試大部分也是不可用的。但是這里有一個(gè)關(guān)于hover的小技巧,當(dāng)你點(diǎn)擊過(guò)一個(gè)按鈕之后,這個(gè)按鈕就會(huì)一直處于hover的狀態(tài),此時(shí)你基于這個(gè)偽類所設(shè)置的css也是起作用的,直到你用手指點(diǎn)擊另外一個(gè)按鈕,hover狀態(tài)就會(huì)轉(zhuǎn)移到另一個(gè)按鈕。利用這一點(diǎn),我們可以做出一些小效果。此技巧在大多數(shù)瀏覽器中還是可用的。
理想很豐滿,現(xiàn)實(shí)很骨感!
雖然w3c為多點(diǎn)觸控做好了準(zhǔn)備,遺憾的是鮮有瀏覽器支持多點(diǎn)觸控的特性,尤其是android平臺(tái)上的瀏覽器,也就讓上文介紹的手指列表變?yōu)榱丝照劊东@兩個(gè)觸摸點(diǎn)會(huì)直接導(dǎo)致觸摸失效!好在ios設(shè)備自帶的safari瀏覽器能夠支持這一特性,讓我們對(duì)未來(lái)充滿希望。畢竟,我們被鼠標(biāo)的單點(diǎn)操作禁錮了太久,多指操作一個(gè)網(wǎng)站是多么令人興奮!
分享:在html5的Canvas上繪制橢圓的幾種方法總結(jié)HTML5中的Canvas并沒(méi)有直接提供繪制橢圓的方法,下面是對(duì)幾種繪制方法的總結(jié)。各種方法各有優(yōu)缺,視情況選用。各方法的參數(shù)相同,感興趣的朋友可以參考下
相關(guān)HTML5教程:
- 只要五步 就可以用HTML5/CSS3快速制作便簽貼特效(圖)
- 網(wǎng)易微博Web App用HTML5開(kāi)發(fā)的過(guò)程介紹
- HTML5 對(duì)各個(gè)標(biāo)簽的定義與規(guī)定:body的介紹
- 關(guān)于HTML5的安全問(wèn)題開(kāi)發(fā)人員需要牢記的
- 關(guān)于HTML5的22個(gè)初級(jí)技巧(圖文教程)
- 開(kāi)發(fā)人員所需要知道的HTML5性能分析面面觀
- HTML5 Web Database 數(shù)據(jù)庫(kù)的SQL語(yǔ)句的使用方法
- HTML5實(shí)踐-圖片設(shè)置成灰度圖
- HTML5安全介紹之內(nèi)容安全策略(CSP)簡(jiǎn)介
- HTML5 Web存儲(chǔ)方式的localStorage和sessionStorage進(jìn)行數(shù)據(jù)本地存儲(chǔ)案例應(yīng)用
- Bootstrap 學(xué)習(xí)分享
- input元素的url類型和email類型簡(jiǎn)介
HTML5教程Rss訂閱Div+Css教程搜索
HTML5教程推薦
- html5 跨文檔消息傳輸示例探討
- html5 Canvas畫圖教程(1)—畫圖的基本常識(shí)
- html5中canvas學(xué)習(xí)筆記1-畫板的尺寸與實(shí)際顯示尺寸
- html5 canvas-1.canvas介紹(hello canvas)
- html5的新玩法——語(yǔ)音搜索
- html5-Canvas可以在web中繪制各種圖形
- Html5游戲開(kāi)發(fā)之乒乓Ping Pong游戲示例(三)
- 利用HTML5中Geolocation獲取地理位置調(diào)用Google Map API在Google Map上定位
- HTML5之SVG 2D入門11—用戶交互性(動(dòng)畫)介紹及應(yīng)用
- html5+css3實(shí)現(xiàn)一款注冊(cè)表單實(shí)例
- 相關(guān)鏈接:
- 教程說(shuō)明:
HTML5教程-html5構(gòu)建觸屏網(wǎng)站之touch事件介紹。