中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

移動端基礎事件總結與應用

發布時間:2020-10-05 01:23:16 來源:腳本之家 閱讀:166 作者:彭玉婷 欄目:web開發

1.觸摸事件touch

    touchstart      手指放在屏幕上觸發

    touchmove    手指在屏幕上移動,連續觸發

    touchend       手指離開屏幕觸發

    touchcancel   當系統停止跟蹤時觸發,該事件暫時用不到

注意:

  1.移動端只能事件只能通過監聽函數添加,不能用on添加

  2.移動端當中就不要用鼠標的事件

  3.移動端的事件會觸發瀏覽器的默認行為,所以在調用事件的時候要把默認行為阻止了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='手指移動了';
});
box.addEventListener('touchend',function(){
 this.innerHTML='手指離開了';
});

2.touch事件對象

   ev.touches                 當前屏幕的手指列表

   ev.targetTouches      當前元素上的手指列表

   ev.changedTouches  觸發當前事件的手指列表

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

       clientX  //觸摸目標在視口中的X坐標。

       clientY  //觸摸目標在視口中的Y坐標。

       Identifier   //標示觸摸的唯一ID。

       pageX  //觸摸目標在頁面中的X坐標。

       pageY  //觸摸目標在頁面中的Y坐標。

       screenX//觸摸目標在屏幕中的X坐標。

       screenY //觸摸目標在屏幕中的Y坐標。

       target // 觸摸的DOM節點目標。

demo:

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

3.設備加速度事件devicemotion

  devicemotion    封裝了運動傳感器數據的事件,可以獲取手機運動狀態下的運動加速度等數據。

  其中加速度的數據包含以下三個方向:

   x:橫向貫穿手機屏幕;

   y:縱向貫穿手機屏幕;

   z:垂直手機屏幕

鑒于有些設備沒有排除重力的影響,所以該事件會返回兩個屬性:

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

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

注意:這個事件只能放在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:方塊跟著重力左右移動

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:搖一搖應用原理

var box=document.getElementById('box');
var lastRange=0; //上一次搖晃的幅度
var isShake=false; //決定用戶到底有沒有大幅度搖晃
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; //當前搖晃的幅度
 if(range-lastRange>100){
 //這個條件成立說明用戶現在已經在大幅度搖晃
 isShake=true;
 }
 if(isShake && range<50){
 //這個條件成立,說明用戶搖晃的幅度很小了就要停了
 box.innerHTML='搖晃了';
 isShake=false;
 }
});

4.設備方向事件deviceorientation

   deviceorientation  封裝了方向傳感器數據的事件,可以獲取手機靜止狀態下的方向數據(手機所處的角度、方位和朝向等)

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

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

   ev.alpha             表示設備沿z軸上的旋轉角度,范圍為0~360。

   注意:這個事件只能放在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.手勢事件gesture

IOS的Safari還引入了一組手勢事件。當兩個手指觸摸屏幕時就會產生手勢,手勢通常會改變顯示項的大小,或者旋轉顯示項。有三個手勢事件,分別如下:

 gesturestart        當一個手指已經按在屏幕上,而另一個手指又觸摸在屏幕時觸發
 gesturechange   當觸摸屏幕的任何一個手指的位置發生改變的時候觸發
 gestureend         當任何一個手指從屏幕上面移開時觸發
 ev.rotation          表示手指變化引起的旋轉角度,負值表示逆時針,正值表示順時針,從0開始。
 ev.scale              表示兩個手指之間的距離情況,向內收縮會縮短距離,這個值從1開始,并隨距離拉大而增長。

注意:

  1. gesture事件目前只有 IOS 2.0以上支持,安卓的暫時沒有支持。

  2. 一定要阻止瀏覽器的默認行為。

demo1:多指旋轉

var startDeg=0; //上次旋轉后的角度
//兩個或者兩個以上手指按下
box.addEventListener('gesturestart',function(){
 this.style.background='blue';
 //rotate(90deg)
 if(this.style.transform){
 startDeg=parseFloat(this.style.transform.split('(')[1]);
 }
});
//兩個或者兩個以上手指變換
box.addEventListener('gesturechange',function(ev){
 /*this.style.background='black';
 this.innerHTML=ev.rotation;*/
 this.style.transform='rotate('+(ev.rotation+startDeg)+'deg)';
});
//兩個或者兩個以上手指抬起
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; //上次縮放后的角度
//兩個或者兩個以上手指按下
box.addEventListener('gesturestart',function(){
 this.style.background='blue';
 //rotate(90deg)
 if(this.style.transform){
 startScale=parseFloat(this.style.transform.split('(')[1]);
 }
});
//兩個或者兩個以上手指變換
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;//設置最小縮放到0.5
 this.style.transform='scale('+sc+')';
});
//兩個或者兩個以上手指抬起
box.addEventListener('gestureend',function(){
 this.style.background='green';
});

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新乡市| 江阴市| 临漳县| 城口县| 璧山县| 武安市| 远安县| 白朗县| 长春市| 都昌县| 富宁县| 温宿县| 抚宁县| 东港市| 江山市| 郑州市| 弋阳县| 淄博市| 霞浦县| 岱山县| 邳州市| 宁河县| 澎湖县| 黑水县| 宁陵县| 嵊泗县| 股票| 桃江县| 兖州市| 吐鲁番市| 赤壁市| 永年县| 湘潭市| 社会| 桐乡市| 南木林县| 孝感市| 会泽县| 汾西县| 遂溪县| 榕江县|