91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

js移動端事件基礎及常用事件庫的示例分析

發布時間:2021-08-19 14:11:35 來源:億速云 閱讀:148 作者:小新 欄目:web開發

這篇文章主要為大家展示了“js移動端事件基礎及常用事件庫的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“js移動端事件基礎及常用事件庫的示例分析”這篇文章吧。

一、事件基礎

PC:click、mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、mousewheel、keydown、keyup、load、scroll、blur、focus、change...

移動端:click(單擊)、load、scroll、blur、focus、change、input(代替keyup、keydown)...TOUCH事件模型(處理單手指操作)、GESTURE事件模型(處理多手指操作)

TOUCH:touchstart、touchmove、touchend、touchcancel

GESTURE:gesturestart、gesturechange、gestureend

1、click:在移動端click屬于單擊事件,不是點擊事件,在移動端的項目中我們經常會區分單擊做什么和雙擊做什么,所以移動端的瀏覽器在識別click的時候,只有確定是單擊后才會把它執行:

在移動端使用click會存在300ms的延遲:瀏覽器在第一次點擊結束后,還需要等到300ms看是否觸發了第二次點擊,如果觸發了第二次點擊就不屬于click了,沒有觸發第二次點擊才屬于click

下面代碼是移動端模擬click時間的代碼

function on(curEle,type,fn){
   curEle.addEventListener(type,fn,false);
  }
  var oBox = document.querySelector('.box');
  //移動端采用click存在300ms延遲
  // oBox.addEventListener('click',function(){
  //  this.style.webkitTransform = 'rotate(360deg)'
  // },false)
  //使用TOUCH事件模型實現點擊操作(單擊&&雙擊)
  on(oBox,'touchstart',function(ev){
   //ev:TouchEvent事件 屬性 type、target、preventDefault(returnValue)、stopPropagation、changedTouches、touches
   //changedTouches和touches都是手指信息的集合(touchList),touches獲取到值的必要條件只有手指還在屏幕上才可以獲取,所以在touchend事件中如果想獲取手指離開的瞬間坐標只能使用changedTouches獲取
   var point = ev.touches[0];
   this['strX'] = point.clientX;
   this['strY'] = point.clientY;
   this['isMove'] = false;
  })
  on(oBox,'touchmove',function(ev){
   var point = ev.touches[0];
   var newX = point.clientX,
    newY = point.clientY;
   //判斷是否發生滑動,我們需要判斷偏移的值是否在30PX以內
   if(Math.abs(newX-this['strX'])>30 || Math.abs(newY-this['strY'])>30){
    this['isMove'] = true;
   }
  })
  on(oBox,'touchend',function(ev){
   if(this['isMove'] === false){
    //沒有發生移動 點擊
    this.style.webkitTransitionDuration = '1s';
    this.style.webkitTransform = 'rotate(360deg)';
    var delayTimer = window.setTimeout(function(){
     this.style.webkitTransitionDuration = '0s';
     this.style.webkitTransform = 'rotate(0deg)';
    }.bind(this),1000);
   }else{
    //滑動
    this.style.background = 'red';
   }
  })

同時也可以使用fastclick.js來解決移動端click事件的300ms延遲 (github地址https://github.com/zhouxiaotian/fastclick)

2、點擊、單擊、雙擊、長按、滑動、左滑、右滑、上滑、下滑

單擊和雙擊(300MS)

點擊和長按(750MS)

點擊和滑動(X/Y軸偏移的距離是否在30PX以內,超過30PX就是滑動)

左右滑動和上下滑動(X軸偏移的距離 > Y軸偏移的距離 = 左右滑 相反就是上下滑)

左滑和右滑(偏移的距離 >0 = 右滑  相反就是左滑)

二、常用的事件庫

FastClick.js :解決CLICK事件300MS的延遲

TOUCH.js:百度云移動手勢庫  GitHub地址  https://github.com/Clouda-team/touch.code.baidu.com

實例如下:  

var oBox = document.querySelector('.box');
  //單擊
  touch.on(oBox,'tap',function(ev){
   this.style.webkitTransitionDuration = '1s';
   this.style.webkitTransform = 'rotate(360deg)';
   var delayTimer = window.setTimeout(function(){
    this.style.webkitTransitionDuration = '0s';
    this.style.webkitTransform = 'rotate(0deg)';
    window.clearTimeout(delayTimer)
   }.bind(this),1000)
  })
  //雙擊
  touch.on(oBox,'doubletap',function(ev){
   this.style.webkitTransitionDuration = '1s';
   this.style.webkitTransform = 'rotate(-360deg)';
   var delayTimer = window.setTimeout(function(){
    this.style.webkitTransitionDuration = '0s';
    this.style.webkitTransform = 'rotate(0deg)';
    window.clearTimeout(delayTimer)
   }.bind(this),1000)
  })
  //長按
  touch.on(oBox,'hold',function(ev){
   this.style.backgroundColor = 'red';
  })

HAMMER.js

Zepto.js:被譽為移動端的小型JQ,JQ由于是在PC端使用的,所以代碼中包含了大量對于ie低版本瀏覽器的兼容處理,而ZEPTO只應用在移動端開發,所以在JQ的基礎上沒有對低版本的ie進行支持

  JQ中提供了很多的選擇器類型及DOM操作方法,但是ZEPTO只是實現了部分常用的選擇器和方法。例如:JQ中的動畫方法有animate、hide、show、fadeIn、fadeOut、fadeToggle、slideDown、slideUp、slideToggle...但是在ZEPTO中只有animate

  ZEPTO的源代碼大小比JQ小很多

  ZEPTO專門為移動端開發而誕生,所以相對于JQ來說更適合移動端:

  ZEPTO的animate動畫方法支持了CSS3動畫的操作

  ZEPTO專門的準備了移動端常用 的事件操作:tap、singleTap、doubleTap、longTap、swipe、swipeUp、swipeDown、swipeLeft、swipeRight

實例代碼如下:  

$('.box').singleTap(function(ev){
   $(this).animate({
    rotate:'360deg'
   },1000,'linear',function(){
    this.style.webkitTransform = 'rotate(0)'
   })
  })

  $('.box').on('touchstart',function(){
   $(this).css('background','red')
  })
  $.ajax({
   url:'',
   type:'get',
   dataType:'json',
   cache:false,
   success:function(){
    
   }
  })

以上是“js移動端事件基礎及常用事件庫的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

南充市| 锦屏县| 姚安县| 铅山县| 大化| 宝山区| 大悟县| 临沂市| 通州市| 安平县| 马尔康县| 紫阳县| 周口市| 长宁区| 格尔木市| 临澧县| 潼关县| 简阳市| 大城县| 荥阳市| 神木县| 阿勒泰市| 庆云县| 新化县| 罗田县| 金沙县| 孝义市| 高淳县| 沂源县| 民权县| 祁门县| 衡水市| 峨山| 古浪县| 弥勒县| 四会市| 永修县| 正定县| 镇康县| 漳浦县| 红河县|