欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

移動(dòng)端基礎(chǔ)事件總結(jié)與應(yīng)用

 更新時(shí)間:2017年01月12日 16:11:14   作者:彭玉婷  
本文主要介紹了移動(dòng)端基礎(chǔ)事件總結(jié)與應(yīng)用,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧

1.觸摸事件touch

    touchstart      手指放在屏幕上觸發(fā)

    touchmove    手指在屏幕上移動(dòng),連續(xù)觸發(fā)

    touchend       手指離開(kāi)屏幕觸發(fā)

    touchcancel   當(dāng)系統(tǒng)停止跟蹤時(shí)觸發(fā),該事件暫時(shí)用不到

注意:

  1.移動(dòng)端只能事件只能通過(guò)監(jiān)聽(tīng)函數(shù)添加,不能用on添加

  2.移動(dòng)端當(dāng)中就不要用鼠標(biāo)的事件

  3.移動(dòng)端的事件會(huì)觸發(fā)瀏覽器的默認(rèn)行為,所以在調(diào)用事件的時(shí)候要把默認(rèn)行為阻止了ev.preventDefault。

demo:

document.addEventListener('touchstart',function(ev){
 ev.preventDefault();
});
var box=document.getElementById("box");
box.addEventListener('touchstart',function(){
 this.innerHTML='手指按下了';
});
box.addEventListener('touchmove',function(){
 this.innerHTML='手指移動(dòng)了';
});
box.addEventListener('touchend',function(){
 this.innerHTML='手指離開(kāi)了';
});

2.touch事件對(duì)象

   ev.touches                 當(dāng)前屏幕的手指列表

   ev.targetTouches      當(dāng)前元素上的手指列表

   ev.changedTouches  觸發(fā)當(dāng)前事件的手指列表

   每個(gè)touch對(duì)象都包含了以下幾個(gè)屬性(打印ev.touches如下):

       clientX  //觸摸目標(biāo)在視口中的X坐標(biāo)。

       clientY  //觸摸目標(biāo)在視口中的Y坐標(biāo)。

       Identifier   //標(biāo)示觸摸的唯一ID。

       pageX  //觸摸目標(biāo)在頁(yè)面中的X坐標(biāo)。

       pageY  //觸摸目標(biāo)在頁(yè)面中的Y坐標(biāo)。

       screenX//觸摸目標(biāo)在屏幕中的X坐標(biāo)。

       screenY //觸摸目標(biāo)在屏幕中的Y坐標(biāo)。

       target // 觸摸的DOM節(jié)點(diǎn)目標(biāo)。

demo:

var box=document.getElementById("box");
//相當(dāng)于mousedown
box.addEventListener('touchstart',function(ev){
 //console.log(ev.touches);
 this.innerHTML=ev.touches.length;//按下手指數(shù)
});

3.設(shè)備加速度事件devicemotion

  devicemotion    封裝了運(yùn)動(dòng)傳感器數(shù)據(jù)的事件,可以獲取手機(jī)運(yùn)動(dòng)狀態(tài)下的運(yùn)動(dòng)加速度等數(shù)據(jù)。

  其中加速度的數(shù)據(jù)包含以下三個(gè)方向:

   x:橫向貫穿手機(jī)屏幕;

   y:縱向貫穿手機(jī)屏幕;

   z:垂直手機(jī)屏幕

鑒于有些設(shè)備沒(méi)有排除重力的影響,所以該事件會(huì)返回兩個(gè)屬性:

   1、accelerationIncludingGravity(含重力的加速度)

   2、acceleration(排除重力影響的加速度)

注意:這個(gè)事件只能放在window身上

demo1:顯示重力加速度的值

window.addEventListener('devicemotion',function(ev){
 var motion=ev.accelerationIncludingGravity; box.innerHTML='x:'+motion.x+'<br/>'+'y:'+motion.y+'<br/>'+'z:'+motion.z;
});

demo2:方塊跟著重力左右移動(dòng)

window.addEventListener('devicemotion',function(ev){
 var motion=ev.accelerationIncludingGravity;
 var x=parseFloat(getComputedStyle(box).left);//box目前的left值
 box.style.left=x+motion.x+'px';
});

demo3:搖一搖應(yīng)用原理

var box=document.getElementById('box');
var lastRange=0; //上一次搖晃的幅度
var isShake=false; //決定用戶(hù)到底有沒(méi)有大幅度搖晃
window.addEventListener('devicemotion',function(ev){
 var motion=ev.accelerationIncludingGravity;
 var x=Math.abs(motion.x);
 var y=Math.abs(motion.y);
 var z=Math.abs(motion.z);
 var range=x+y+z; //當(dāng)前搖晃的幅度
 if(range-lastRange>100){
 //這個(gè)條件成立說(shuō)明用戶(hù)現(xiàn)在已經(jīng)在大幅度搖晃
 isShake=true;
 }
 if(isShake && range<50){
 //這個(gè)條件成立,說(shuō)明用戶(hù)搖晃的幅度很小了就要停了
 box.innerHTML='搖晃了';
 isShake=false;
 }
});

4.設(shè)備方向事件deviceorientation

   deviceorientation  封裝了方向傳感器數(shù)據(jù)的事件,可以獲取手機(jī)靜止?fàn)顟B(tài)下的方向數(shù)據(jù)(手機(jī)所處的角度、方位和朝向等)

   ev.beta               表示設(shè)備在x軸上的旋轉(zhuǎn)角度,范圍為-180~180。它描述的是設(shè)備由前向后旋轉(zhuǎn)的情況。

   ev.gamma          表示設(shè)備在y軸上的旋轉(zhuǎn)角度,范圍為-90~90。它描述的是設(shè)備由左向右旋轉(zhuǎn)的情況。

   ev.alpha             表示設(shè)備沿z軸上的旋轉(zhuǎn)角度,范圍為0~360。

   注意:這個(gè)事件只能放在window身上

demo:

window.addEventListener('deviceorientation',function(ev){
 box.innerHTML='x軸傾斜:'+ev.beta.toFixed(1)+'</br>y軸傾斜:'+ev.gamma.toFixed(1)+'</br>z軸傾斜:'+ev.alpha.toFixed(1);
});

5.手勢(shì)事件gesture

IOS的Safari還引入了一組手勢(shì)事件。當(dāng)兩個(gè)手指觸摸屏幕時(shí)就會(huì)產(chǎn)生手勢(shì),手勢(shì)通常會(huì)改變顯示項(xiàng)的大小,或者旋轉(zhuǎn)顯示項(xiàng)。有三個(gè)手勢(shì)事件,分別如下:

 gesturestart        當(dāng)一個(gè)手指已經(jīng)按在屏幕上,而另一個(gè)手指又觸摸在屏幕時(shí)觸發(fā)
 gesturechange   當(dāng)觸摸屏幕的任何一個(gè)手指的位置發(fā)生改變的時(shí)候觸發(fā)
 gestureend         當(dāng)任何一個(gè)手指從屏幕上面移開(kāi)時(shí)觸發(fā)
 ev.rotation          表示手指變化引起的旋轉(zhuǎn)角度,負(fù)值表示逆時(shí)針,正值表示順時(shí)針,從0開(kāi)始。
 ev.scale              表示兩個(gè)手指之間的距離情況,向內(nèi)收縮會(huì)縮短距離,這個(gè)值從1開(kāi)始,并隨距離拉大而增長(zhǎng)。

注意:

  1. gesture事件目前只有 IOS 2.0以上支持,安卓的暫時(shí)沒(méi)有支持。

  2. 一定要阻止瀏覽器的默認(rèn)行為。

demo1:多指旋轉(zhuǎn)

var startDeg=0; //上次旋轉(zhuǎn)后的角度
//兩個(gè)或者兩個(gè)以上手指按下
box.addEventListener('gesturestart',function(){
 this.style.background='blue';
 //rotate(90deg)
 if(this.style.transform){
 startDeg=parseFloat(this.style.transform.split('(')[1]);
 }
});
//兩個(gè)或者兩個(gè)以上手指變換
box.addEventListener('gesturechange',function(ev){
 /*this.style.background='black';
 this.innerHTML=ev.rotation;*/
 this.style.transform='rotate('+(ev.rotation+startDeg)+'deg)';
});
//兩個(gè)或者兩個(gè)以上手指抬起
box.addEventListener('gestureend',function(){
 this.style.background='green';
});

demo2:多指縮放

document.addEventListener('touchstart',function(ev){
 ev.preventDefault();
});
document.addEventListener('touchmove',function(ev){
 ev.preventDefault();
});
var box=document.getElementById("box");
var startScale=1; //上次縮放后的角度
//兩個(gè)或者兩個(gè)以上手指按下
box.addEventListener('gesturestart',function(){
 this.style.background='blue';
 //rotate(90deg)
 if(this.style.transform){
 startScale=parseFloat(this.style.transform.split('(')[1]);
 }
});
//兩個(gè)或者兩個(gè)以上手指變換
box.addEventListener('gesturechange',function(ev){
 /*this.style.background='black';
 this.innerHTML=ev.rotation;*/
 var sc=ev.scale*startScale;
 sc=sc<0.5?0.5:sc;//設(shè)置最小縮放到0.5
 this.style.transform='scale('+sc+')';
});
//兩個(gè)或者兩個(gè)以上手指抬起
box.addEventListener('gestureend',function(){
 this.style.background='green';
});

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評(píng)論