這篇文章主要為大家展示了“js移動(dòng)端事件基礎(chǔ)及常用事件庫的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“js移動(dòng)端事件基礎(chǔ)及常用事件庫的示例分析”這篇文章吧。
在泰來等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營(yíng)銷推廣,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),泰來網(wǎng)站建設(shè)費(fèi)用合理。一、事件基礎(chǔ)
PC:click、mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、mousewheel、keydown、keyup、load、scroll、blur、focus、change...
移動(dòng)端:click(單擊)、load、scroll、blur、focus、change、input(代替keyup、keydown)...TOUCH事件模型(處理單手指操作)、GESTURE事件模型(處理多手指操作)
TOUCH:touchstart、touchmove、touchend、touchcancel
GESTURE:gesturestart、gesturechange、gestureend
1、click:在移動(dòng)端click屬于單擊事件,不是點(diǎn)擊事件,在移動(dòng)端的項(xiàng)目中我們經(jīng)常會(huì)區(qū)分單擊做什么和雙擊做什么,所以移動(dòng)端的瀏覽器在識(shí)別click的時(shí)候,只有確定是單擊后才會(huì)把它執(zhí)行:
在移動(dòng)端使用click會(huì)存在300ms的延遲:瀏覽器在第一次點(diǎn)擊結(jié)束后,還需要等到300ms看是否觸發(fā)了第二次點(diǎn)擊,如果觸發(fā)了第二次點(diǎn)擊就不屬于click了,沒有觸發(fā)第二次點(diǎn)擊才屬于click
下面代碼是移動(dòng)端模擬click時(shí)間的代碼
function on(curEle,type,fn){ curEle.addEventListener(type,fn,false); } var oBox = document.querySelector('.box'); //移動(dòng)端采用click存在300ms延遲 // oBox.addEventListener('click',function(){ // this.style.webkitTransform = 'rotate(360deg)' // },false) //使用TOUCH事件模型實(shí)現(xiàn)點(diǎn)擊操作(單擊&&雙擊) on(oBox,'touchstart',function(ev){ //ev:TouchEvent事件 屬性 type、target、preventDefault(returnValue)、stopPropagation、changedTouches、touches //changedTouches和touches都是手指信息的集合(touchList),touches獲取到值的必要條件只有手指還在屏幕上才可以獲取,所以在touchend事件中如果想獲取手指離開的瞬間坐標(biāo)只能使用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; //判斷是否發(fā)生滑動(dòng),我們需要判斷偏移的值是否在30PX以內(nèi) 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){ //沒有發(fā)生移動(dòng) 點(diǎn)擊 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{ //滑動(dòng) this.style.background = 'red'; } })
同時(shí)也可以使用fastclick.js來解決移動(dòng)端click事件的300ms延遲 (github地址https://github.com/zhouxiaotian/fastclick)
2、點(diǎn)擊、單擊、雙擊、長(zhǎng)按、滑動(dòng)、左滑、右滑、上滑、下滑
單擊和雙擊(300MS)
點(diǎn)擊和長(zhǎng)按(750MS)
點(diǎn)擊和滑動(dòng)(X/Y軸偏移的距離是否在30PX以內(nèi),超過30PX就是滑動(dòng))
左右滑動(dòng)和上下滑動(dòng)(X軸偏移的距離 > Y軸偏移的距離 = 左右滑 相反就是上下滑)
左滑和右滑(偏移的距離 >0 = 右滑 相反就是左滑)
二、常用的事件庫
FastClick.js :解決CLICK事件300MS的延遲
TOUCH.js:百度云移動(dòng)手勢(shì)庫 GitHub地址 https://github.com/Clouda-team/touch.code.baidu.com
實(shí)例如下:
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) }) //長(zhǎng)按 touch.on(oBox,'hold',function(ev){ this.style.backgroundColor = 'red'; })
HAMMER.js
Zepto.js:被譽(yù)為移動(dòng)端的小型JQ,JQ由于是在PC端使用的,所以代碼中包含了大量對(duì)于ie低版本瀏覽器的兼容處理,而ZEPTO只應(yīng)用在移動(dòng)端開發(fā),所以在JQ的基礎(chǔ)上沒有對(duì)低版本的ie進(jìn)行支持
JQ中提供了很多的選擇器類型及DOM操作方法,但是ZEPTO只是實(shí)現(xiàn)了部分常用的選擇器和方法。例如:JQ中的動(dòng)畫方法有animate、hide、show、fadeIn、fadeOut、fadeToggle、slideDown、slideUp、slideToggle...但是在ZEPTO中只有animate
ZEPTO的源代碼大小比JQ小很多
ZEPTO專門為移動(dòng)端開發(fā)而誕生,所以相對(duì)于JQ來說更適合移動(dòng)端:
ZEPTO的animate動(dòng)畫方法支持了CSS3動(dòng)畫的操作
ZEPTO專門的準(zhǔn)備了移動(dòng)端常用 的事件操作:tap、singleTap、doubleTap、longTap、swipe、swipeUp、swipeDown、swipeLeft、swipeRight
實(shí)例代碼如下:
$('.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移動(dòng)端事件基礎(chǔ)及常用事件庫的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站制作公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
文章題目:js移動(dòng)端事件基礎(chǔ)及常用事件庫的示例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://jinyejixie.com/article26/dhdpcg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、定制開發(fā)、軟件開發(fā)、建站公司、商城網(wǎng)站、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容