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

JavaScript移動端常用事件之touch觸摸事件詳解

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

前言

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

1.觸摸事件

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

2.觸屏事件

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

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

 因為平時我們都是給元素注冊觸摸事件,所以常用targetTocuhes

3.TouchEvent觸摸事件對象

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

4.拖動元素

1.touchstart,touchmove,touchend 可以實現(xiàn)拖動元素

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

3.拖動的原理:手指移動計算出手指移動的距離,然后用盒子原來的位置+手指移動的距離

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

<!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');
        // 獲取手指初始坐標和盒子的原來位置
        var startX = 0;
        var startY = 0;
        // 獲取盒子原來的位置
        var x = 0;
        var y = 0;
        div.addEventListener('touchstart', function (e) {
            // 得到初始的手指坐標
            startX = e.targetTouches[0].pageX;
            startY = e.targetTouches[0].pageY;
            // 獲取盒子坐標
            x = this.offsetLeft;
            y = this.offsetTop;
        })
        div.addEventListener('touchmove', function (e) {
            // 手指的移動距離= 手指移動之后的坐標 - 手指初始的坐標
            var moveX = e.targetTouches[0].pageX - startX;
            var moveY = e.targetTouches[0].pageY - startY;
            // 移動盒子,盒子原來的位置+手指移動的距離
            this.style.left = x + moveX + 'px';
            this.style.top = y + moveY + 'px';
            // 阻止屏幕滾動行為
            e.preventDefault();
        })
    </script>
</body>
 
</html>

總結 

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

相關文章

最新評論

南京市| 荣昌县| 仙居县| 堆龙德庆县| 葵青区| 林州市| 日照市| 攀枝花市| 沙田区| 丘北县| 宕昌县| 美姑县| 连州市| 乐陵市| 余干县| 永州市| 定兴县| 嘉峪关市| 略阳县| 汉源县| 美姑县| 于田县| 安阳市| 临洮县| 龙井市| 中卫市| 四平市| 卢氏县| 河津市| 攀枝花市| 交城县| 宁阳县| 赤水市| 太仆寺旗| 沾化县| 延安市| 东辽县| 伊春市| 会同县| 商城县| 商水县|