日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

如何利用原生JS實(shí)現(xiàn)觸摸滑動(dòng)監(jiān)聽(tīng)事件

瀏覽:191日期:2024-03-22 16:59:33
前言

今天寫(xiě)一個(gè)小Demo,有個(gè)地方涉及到了左滑右滑的邏輯,本來(lái)想著用插件來(lái)著,但是想到自己好久沒(méi)用原生JS寫(xiě)滑動(dòng)的監(jiān)聽(tīng)了,所以試著用原生JS來(lái)實(shí)現(xiàn)了一下,畢竟溫故而知新嘛,同時(shí)做個(gè)記錄。先把實(shí)現(xiàn)的效果貼出來(lái):

如何利用原生JS實(shí)現(xiàn)觸摸滑動(dòng)監(jiān)聽(tīng)事件

構(gòu)思

想要寫(xiě)出絲滑的觸摸滑動(dòng)事件的監(jiān)聽(tīng),要考慮以下3個(gè)方面的邏輯:

距離: 滑動(dòng)距離要大于40 時(shí)間: 滑動(dòng)時(shí)間小于在0.5秒,即500毫秒內(nèi)完成手指按下,拖動(dòng),離開(kāi)(避免只是手指在屏幕就觸發(fā)) 滑動(dòng)方向: 左右滑動(dòng)的條件是:X軸移動(dòng)的距離大于Y軸移動(dòng)的距離,為正則向左,為負(fù)則向右上下滑動(dòng)的條件是Y軸移動(dòng)的距離大于X軸移動(dòng)的距離,為正則向上,為負(fù)則向下

有了基礎(chǔ)的構(gòu)思,我們就可以根據(jù)這個(gè)思路來(lái)完成代碼了~

監(jiān)聽(tīng)的事件

說(shuō)到監(jiān)聽(tīng)觸摸滑動(dòng),要用到的自然就是下面這三個(gè)觸摸事件了:

1. touchstart 觸摸開(kāi)始,手指點(diǎn)擊屏幕時(shí)觸發(fā)(可監(jiān)聽(tīng)多點(diǎn)觸控,后面的手指也同樣會(huì)觸發(fā))

2. touchmove 接觸點(diǎn)改變,滑動(dòng)時(shí)持續(xù)觸發(fā)

3. touchend 觸摸結(jié)束,手指離開(kāi)屏幕時(shí)觸發(fā)

這三個(gè)觸摸事件每個(gè)都包括了三個(gè)觸摸對(duì)象列表(可根據(jù)觸摸點(diǎn)實(shí)現(xiàn)多點(diǎn)觸控):

1. touches:當(dāng)前屏幕上的所有手指觸摸點(diǎn)的列表

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

3. changedTouches:當(dāng)前事件手指的列表

同時(shí)每個(gè)觸摸對(duì)象Touch包含的屬性如下:

- identifier:標(biāo)識(shí)觸摸的唯一ID

- pageX:觸摸點(diǎn)在頁(yè)面中的x坐標(biāo)

- pageY:觸摸點(diǎn)在頁(yè)面中的y坐標(biāo)

- screenX:觸摸點(diǎn)在屏幕中的x坐標(biāo)

- screenY:觸摸點(diǎn)在屏幕中的y坐標(biāo)

- clientX:觸摸點(diǎn)在視口中的x坐標(biāo)

- clientY:觸摸點(diǎn)在視口中的y坐標(biāo)

- target:觸摸的DOM節(jié)點(diǎn)

代碼實(shí)現(xiàn)

有了上面的構(gòu)思和觸摸事件的基礎(chǔ),我們很容易就能把代碼敲出來(lái)啦~

let box = document.querySelector(’body’) // 監(jiān)聽(tīng)對(duì)象let startTime = ’’ // 觸摸開(kāi)始時(shí)間let startDistanceX = ’’ // 觸摸開(kāi)始X軸位置let startDistanceY = ’’ // 觸摸開(kāi)始Y軸位置let endTime = ’’ // 觸摸結(jié)束時(shí)間let endDistanceX = ’’ // 觸摸結(jié)束X軸位置let endDistanceY = ’’ // 觸摸結(jié)束Y軸位置let moveTime = ’’ // 觸摸時(shí)間let moveDistanceX = ’’ // 觸摸移動(dòng)X軸距離let moveDistanceY = ’’ // 觸摸移動(dòng)Y軸距離box.addEventListener('touchstart', (e) => { startTime = new Date().getTime() startDistanceX = e.touches[0].screenX startDistanceY = e.touches[0].screenY})box.addEventListener('touchend', (e) => { endTime = new Date().getTime() endDistanceX = e.changedTouches[0].screenX endDistanceY = e.changedTouches[0].screenY moveTime = endTime - startTime moveDistanceX = startDistanceX - endDistanceX moveDistanceY = startDistanceY - endDistanceY console.log(moveDistanceX, moveDistanceY) // 判斷滑動(dòng)距離超過(guò)40 且 時(shí)間小于500毫秒 if ((Math.abs(moveDistanceX) > 40 || Math.abs(moveDistanceY) > 40) && moveTime < 500) {// 判斷X軸移動(dòng)的距離是否大于Y軸移動(dòng)的距離if (Math.abs(moveDistanceX) > Math.abs(moveDistanceY)) {// 左右console.log(moveDistanceX > 0 ? ’左’ : ’右’)} else {// 上下console.log(moveDistanceY > 0 ? ’上’ : ’下’)} }})

運(yùn)行一下看看吧:

如何利用原生JS實(shí)現(xiàn)觸摸滑動(dòng)監(jiān)聽(tīng)事件

可以看出,觸摸時(shí)間大于500ms不會(huì)觸發(fā),滑動(dòng)距離小于40也不會(huì)觸發(fā),如果是有角度的滑動(dòng),則會(huì)以XY軸移動(dòng)距離最遠(yuǎn)的為準(zhǔn)。完美實(shí)現(xiàn)!

后記

前端框架發(fā)展日益迅猛,很多人直接上手學(xué)習(xí)框架也毫無(wú)壓力,對(duì)原生JS的學(xué)習(xí)就不那么重視了。但萬(wàn)變不離其宗,框架的優(yōu)勢(shì)在于它的設(shè)計(jì)思想和模式,想要深刻的理解還是要有原生JS做基礎(chǔ),想要走得遠(yuǎn),還是要把基礎(chǔ)夯實(shí),畢竟萬(wàn)丈高樓平地起不是?

到此這篇關(guān)于如何利用原生JS實(shí)現(xiàn)觸摸滑動(dòng)監(jiān)聽(tīng)事件的文章就介紹到這了,更多相關(guān)JS觸摸滑動(dòng)監(jiān)聽(tīng)事件內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩国产高清| 免费看精品久久片| 亚洲精品国产偷自在线观看| 荡女精品导航| 国产精品s色| 国产剧情一区| 91精品在线免费视频| 一区二区电影| 免费在线观看日韩欧美| 香蕉久久国产| 亚洲免费网址| 9国产精品视频| 国产亚洲网站| 99在线精品视频在线观看 | 一区二区电影在线观看| 最新日韩欧美| 亚洲电影在线一区二区三区| 999久久久亚洲| 在线日韩中文| 中文在线不卡| 亚洲婷婷丁香| 日韩有码av| 欧美三级第一页| 国产精品s色| 麻豆91小视频| 成人高清一区| 久久免费黄色| 91久久国产| 日本大胆欧美人术艺术动态| 综合亚洲色图| 欧美欧美黄在线二区| 97久久超碰| 老司机免费视频一区二区三区| 久久精品国产福利| 欧美日韩国产观看视频| 欧美一级精品| 免费看日韩精品| 国产欧美另类| 天堂а√在线最新版中文在线| 国精品一区二区三区| 蜜臀久久久久久久| 国产精品一区毛片| 成人日韩精品| 亚洲综合电影一区二区三区| 日欧美一区二区| 国产人成精品一区二区三| 国产精品嫩草影院在线看| 久久久久久婷| 欧美特黄a级高清免费大片a级| 免费在线看一区| 国产精品magnet| 婷婷国产精品| 日韩中文字幕在线一区| 久久亚洲人体| 1024精品一区二区三区| 在线精品一区二区| 国产精品啊啊啊| 欧美成人基地| 综合一区二区三区| 国产一区二区精品福利地址| 亚洲天堂久久| 免费成人在线影院| 国产一区一一区高清不卡| 1024精品久久久久久久久| 日韩国产在线不卡视频| av中文字幕在线观看第一页| 亚洲资源av| 精品久久一区| 丝袜美腿亚洲一区| 国内精品麻豆美女在线播放视频| 亚洲精品中文字幕乱码| 国产一卡不卡| 久久一区二区中文字幕| 欧美一区影院| 久久要要av| 国产精品xxxav免费视频| 欧美成人精品三级网站| 日韩一区免费| 欧美亚洲国产一区| 久久麻豆视频| 亚洲精品极品| 天堂资源在线亚洲| 九九九精品视频| 深夜福利一区| 欧美日韩国产免费观看| 视频一区二区中文字幕| 国产亚洲午夜| 国产成人精品一区二区三区在线| 免费成人网www| 日本a级不卡| 国产综合激情| 午夜电影一区| 亚洲五月婷婷| 欧美国产先锋| 伊人成人在线视频| 国产精品伊人| 国产一区亚洲| 亚洲尤物在线| 久久精品国产99国产| 夜夜嗨一区二区三区| 麻豆精品99| 久色成人在线| 日本久久综合| 亚州av日韩av| 久久亚洲国产| 精品视频网站| 久久国产成人午夜av影院宅| 国产一区二区三区免费在线| 国产亚洲人成a在线v网站| 香蕉久久夜色精品国产| 国产视频网站一区二区三区| 国产在线|日韩| 欧美视频一区| 欧美另类综合| 你懂的亚洲视频| 日韩成人一级| 亚洲一区二区免费看| 国产成人精品一区二区三区在线| 亚洲日产国产精品| 蜜桃tv一区二区三区| 国产一区日韩| 久久99伊人| 私拍精品福利视频在线一区| 国产欧美一区二区三区国产幕精品| 好吊日精品视频| 精品亚洲二区| 国产精品成人**免费视频 | 欧美日本久久| 亚洲一级大片| 亚洲免费黄色| 激情综合网站| 99精品小视频| 成人久久一区| 欧美1区二区| 男人的天堂亚洲一区| 亚洲香蕉网站| 亚洲欧洲高清| 国产一区丝袜| 久久午夜影院| 久久成人高清| 欧美激情五月| 国产乱人伦丫前精品视频| 蜜臀久久99精品久久久久久9| 136国产福利精品导航网址| 中文字幕在线免费观看视频| 国产高清精品二区| 国产一卡不卡| 欧美日韩夜夜| 日韩1区2区3区| 日韩一级精品| 麻豆久久精品| 99国产精品99久久久久久粉嫩| 久久精品av| 久久婷婷激情| 欧美日韩免费观看视频| 韩国三级一区| 蜜桃视频在线网站| 激情黄产视频在线免费观看| 国产精品亚洲综合色区韩国| 国产精品久久乐| 国产精品毛片视频| 欧美激情麻豆| 国产一区二区三区不卡视频网站 | 亚洲激情中文| 国产福利片在线观看| 成人国产精品一区二区网站| 国产欧美日韩精品一区二区三区| 日韩高清一级| 国产欧美一区| 精品中文字幕一区二区三区 | 国产精选久久| 欧美1区2区3| 久久免费精品| 国际精品欧美精品| 午夜日韩在线| 人人爽香蕉精品| 亚洲精品看片| 欧美亚洲一级| 国产精品美女在线观看直播| 美女视频黄免费的久久| 国产成年精品| 久久久久久久久丰满| 亚洲激情五月| 人人爽香蕉精品| 麻豆国产精品| 久久精品影视| 蜜桃av一区二区三区电影| 日韩久久电影| 91久久国产| 中文字幕日韩高清在线| 日本不卡中文字幕| 麻豆久久久久久| 福利欧美精品在线| 欧美国产偷国产精品三区| аⅴ资源天堂资源库在线| 欧美日韩水蜜桃| 香蕉久久一区| 红杏一区二区三区| 欧美亚洲国产一区| 91精品一区|