最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript移動(dòng)端常用事件之touch觸摸事件詳解

 更新時(shí)間:2022年10月10日 10:42:43   作者:Aic山魚  
觸屏事件touch也稱為觸摸事件,touch對(duì)象代表一個(gè)觸摸點(diǎn),觸摸點(diǎn)可能是一根手指,也可能是一根觸摸筆,觸屏事件可響應(yīng)用戶手指(或觸摸筆)對(duì)屏幕或者觸控板操作,下面這篇文章主要給大家介紹了關(guān)于JavaScript移動(dòng)端常用事件之touch觸摸事件的相關(guān)資料,需要的朋友可以參考下

前言

移動(dòng)端瀏覽器兼容性較好,不需要考慮JS的兼容性問題,可以放心的使用原生JS書寫效果,但是移動(dòng)端也有自己獨(dú)特的地方。如觸屏事件touch (也稱觸摸事件) , Android和IOS都有。

1.觸摸事件

觸屏touch事件說明
touchstart手指觸摸到一個(gè)DOM元素時(shí)觸發(fā)
touchmove手指在一個(gè)DOM元素上滑動(dòng)時(shí)觸發(fā)
touchend手指從一個(gè)DOM元素上移開時(shí)觸發(fā)
<body>
    <div></div>
    <script>
        var div = document.querySelector('div');
        // 手指觸摸DOM事件
        div.addEventListener('touchstart', function () {
            console.log('別摸我!');
        })
        // 手指觸摸滑動(dòng)DOM事件
        div.addEventListener('touchmove', function () {
            console.log('我繼續(xù)摸');
        })
        // 手指觸摸離開DOM事件
        div.addEventListener('touchend', function () {
            console.log('我摸夠了');
        })
 
    </script>

2.觸屏事件

TouchEvent是一類描述手指在觸摸平面 (觸摸屏、觸摸板等)的狀態(tài)變化的事件。這類事件用于描述一個(gè)或多個(gè)觸點(diǎn),使開發(fā)者可以檢測(cè)觸點(diǎn)的移動(dòng),觸點(diǎn)的加和減少,等等 touchstart、touchmove、 touchend 三個(gè)事件都會(huì)各自有事件對(duì)象。

觸摸列表說明
touches正在觸摸屏幕的所有手指的一個(gè)列表
targetTouches正在觸摸當(dāng)前DOM元素上的手指的一一個(gè)列表
changedTouches手指狀態(tài)發(fā)生了改變的列表,從無到有,從有到無變化

 因?yàn)槠綍r(shí)我們都是給元素注冊(cè)觸摸事件,所以常用targetTocuhes

3.TouchEvent觸摸事件對(duì)象

touches 正在觸摸屏幕的所有于指的列衣,targetTouches 正在觸摸當(dāng)前DOM元素的手指列表如果偵聽的是一個(gè)DOM元素,他們兩個(gè)是一樣的,changedTouches 手指狀態(tài)發(fā)生了改變的列表從無到有或者從有到無

4.拖動(dòng)元素

1.touchstart,touchmove,touchend 可以實(shí)現(xiàn)拖動(dòng)元素

2.但是拖動(dòng)元素需要當(dāng)前手指的坐標(biāo)值我們可以使用targetTouches[0] 里面的pageX和pageY

3.拖動(dòng)的原理:手指移動(dòng)計(jì)算出手指移動(dòng)的距離,然后用盒子原來的位置+手指移動(dòng)的距離

4.手指移動(dòng)的距離 = 手指滑動(dòng)中的位置 - 手指剛開始觸摸的位置

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        body {
            margin: 0;
            padding: 0;
        }
 
        div {
            position: absolute;
            left: 0;
            width: 100px;
            height: 100px;
            background-color: plum;
        }
    </style>
</head>
 
<body>
    <div></div>
    <script>
        var div = document.querySelector('div');
        // 獲取手指初始坐標(biāo)和盒子的原來位置
        var startX = 0;
        var startY = 0;
        // 獲取盒子原來的位置
        var x = 0;
        var y = 0;
        div.addEventListener('touchstart', function (e) {
            // 得到初始的手指坐標(biāo)
            startX = e.targetTouches[0].pageX;
            startY = e.targetTouches[0].pageY;
            // 獲取盒子坐標(biāo)
            x = this.offsetLeft;
            y = this.offsetTop;
        })
        div.addEventListener('touchmove', function (e) {
            // 手指的移動(dòng)距離= 手指移動(dòng)之后的坐標(biāo) - 手指初始的坐標(biāo)
            var moveX = e.targetTouches[0].pageX - startX;
            var moveY = e.targetTouches[0].pageY - startY;
            // 移動(dòng)盒子,盒子原來的位置+手指移動(dòng)的距離
            this.style.left = x + moveX + 'px';
            this.style.top = y + moveY + 'px';
            // 阻止屏幕滾動(dòng)行為
            e.preventDefault();
        })
    </script>
</body>
 
</html>

總結(jié) 

到此這篇關(guān)于JavaScript移動(dòng)端常用事件之touch觸摸事件詳解的文章就介紹到這了,更多相關(guān)js移動(dòng)端touch觸摸事件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript中校驗(yàn)銀行卡號(hào)的實(shí)現(xiàn)代碼

    JavaScript中校驗(yàn)銀行卡號(hào)的實(shí)現(xiàn)代碼

    本文通過案例給大家介紹了js中校驗(yàn)銀行卡號(hào)的代碼,代碼小編測(cè)試過,可行。代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2016-12-12
  • javascript比較文檔位置

    javascript比較文檔位置

    一個(gè)很棒的 blog 文章,是 PPK 兩年前寫的,文章中解釋了 contains() 和 compareDocumentPosition() 方法運(yùn)行在他們各自的瀏覽器上。從那起,我已經(jīng)對(duì)這些方法做了大量的研究,并且已經(jīng)在很多場(chǎng)合使用他們。在很多任務(wù)中,他們被證明是非常有用的(特別關(guān)于結(jié)構(gòu)的抽象 DOM 選擇器)。
    2008-04-04
  • JavaScript交換兩個(gè)變量值的七種解決方案

    JavaScript交換兩個(gè)變量值的七種解決方案

    最近在寫位操作的時(shí)候突然想到了這個(gè)問題,突然想總結(jié)一下,交換變量值的問題可能使我們學(xué)習(xí)編程語言接觸到的比較早的邏輯問題,小伙伴或多或少會(huì)兩種解決的方法,本文提供了七種解決的方法,下面跟著小編來一起看看吧。
    2016-12-12
  • Servlet返回的數(shù)據(jù)js解析2種方法

    Servlet返回的數(shù)據(jù)js解析2種方法

    這篇文章主要介紹了Servlet返回的數(shù)據(jù)js解析2種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 微信小程序開發(fā)實(shí)現(xiàn)輪播圖

    微信小程序開發(fā)實(shí)現(xiàn)輪播圖

    這篇文章主要為大家詳細(xì)介紹了微信小程序開發(fā)實(shí)現(xiàn)輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Js類的靜態(tài)方法與實(shí)例方法區(qū)分及jQuery拓展的兩種方法

    Js類的靜態(tài)方法與實(shí)例方法區(qū)分及jQuery拓展的兩種方法

    這篇文章主要介紹了Js類的靜態(tài)方法與實(shí)例方法區(qū)分及jQuery拓展的兩種方法 的相關(guān)資料,對(duì)靜態(tài)方法(Static)和實(shí)例方法(非Static)不太理解的朋友可以一起學(xué)習(xí)下
    2016-06-06
  • django admin 使用SimpleUI自定義按鈕彈窗框示例

    django admin 使用SimpleUI自定義按鈕彈窗框示例

    Django 后臺(tái)admin有大量的屬性和方法,擁有強(qiáng)大的功能和自定義能力,這篇文章主要介紹了django admin 使用SimpleUI自定義按鈕彈窗框示例,需要的朋友可以參考下
    2023-04-04
  • JavaScript 事件冒泡簡(jiǎn)介及應(yīng)用

    JavaScript 事件冒泡簡(jiǎn)介及應(yīng)用

    這篇文章有助于大家認(rèn)識(shí)事件冒泡的一些知識(shí)。
    2010-01-01
  • 采用自執(zhí)行的匿名函數(shù)解決for循環(huán)使用閉包的問題

    采用自執(zhí)行的匿名函數(shù)解決for循環(huán)使用閉包的問題

    這篇文章主要介紹了采用自執(zhí)行的匿名函數(shù)解決for循環(huán)使用閉包的問題,很簡(jiǎn)單,但比較實(shí)用,需要的朋友可以參考下
    2014-09-09
  • js下獲得客戶端操作系統(tǒng)的函數(shù)代碼(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)

    js下獲得客戶端操作系統(tǒng)的函數(shù)代碼(1:vista,2:windows7,3:2000,4:xp,5:2003,6:20

    有時(shí)候需要在客戶端獲取操作系統(tǒng)的版本,以便更好的給用戶合適的信息,提高用戶體驗(yàn),好不容易從網(wǎng)站發(fā)現(xiàn)了這段代碼,分享給大家。
    2011-10-10

最新評(píng)論

阳东县| 丰宁| 绵竹市| 博兴县| 凌海市| 竹溪县| 绥阳县| 南投市| 赞皇县| 阿合奇县| 鄂尔多斯市| 湾仔区| 诸暨市| 托里县| 新竹市| 军事| 湘阴县| 兴城市| 贵南县| 漳州市| 谢通门县| 延安市| 临夏县| 保康县| 客服| 全南县| 景泰县| 临颍县| 双峰县| 霍城县| 连山| 登封市| 孝昌县| 射洪县| 祁阳县| 盐源县| 彭州市| 红河县| 淮滨县| 贵溪市| 邢台县|