zoukankan      html  css  js  c++  java
  • 移动端常见特效

    移动端介绍

    //1 不用考虑兼容性问题 可以放心的使用原生JS
    //2 能用CSS3的就用c3
    //3 会有独特的地方 如触屏事件

    一 触屏事件

    1)常见事件

    //1 touchstart 手指触摸事件
    
    //2 touchmove  手指滑动事件
    
    //3 touchend   手指移出事件

    2)代码范例

    <!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>touch事件</title>
        <style>
            div {
                 100px;
                height: 100px;
                background: pink;
            }
        </style>
    </head>
    <body>
    <div></div>
    <script>
        var div = document.querySelector('div');
        // 1. 手指触摸DOM元素事件
        div.addEventListener("touchstart", function () {
            console.log('手指触摸事件');
        });
        //2. 手指滑动触发
        div.addEventListener('touchmove',function () {
            console.log('手指滑动事件');
        });
        // //3 手指离开触发
        div.addEventListener('touchend',function () {
            console.log('我离开了');
        });
    </script>
    </body>
    </html>

    二 触摸对象 TouchEvent

    1) 常见属性

    //1 touchs 正在触摸屏幕的所有手指的列表
    
    //2 targetTouches 正在触摸当前DOM元素的手指列表 [ 最常用 ]
    //3 changeTouches 手指侦听发生了改变的列表 (从无到右、从有到无)

    2)三者的区别

    //1 手指离开事件 只有 changeTouches 可以获取到
    //2 如果侦听的是一个DOM元素 touchs 和 targetTouches 一样
    
    

    3)获取到某个手指的信息

    //1 e.targetTouches[0] 得到正在触摸DOM元素的 第一个手指的相关信息
    //比如手指的坐标

    三 移动端拖动元素

    1)基础知识

    //1 touchstart  touchmove  touchend 可以实现拖动元素
    
    //2 获取当前手指的坐标值 targetTouches[0].pageX

    //e.preventDefault();//阻止屏幕默认的滚动行为

    2)拖动元素三部曲

    //1 触摸元素 touchstart 获取手指初始坐标 同时获得盒子原来的位置

    //2 移动手指 touchmove 计算手指的滑动距离 并且移动盒子

    //3 离开手指 touchend

    手指移动也会触发滚动屏幕 所以要阻止默认的屏幕滚动 e.preventDefaule();

    3)代码范例

    <!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>移动端拖动元素</title>
        <style>
            div {
                position: absolute;
                left: 0;
                 100px;
                height: 100px;
                background-color: pink;
            }
        </style>
    </head>
    
    <body>
    <div></div>
    <script>
        // (1) 触摸元素 touchstart:  获取手指初始坐标,同时获得盒子原来的位置
        // (2) 移动手指 touchmove:  计算手指的滑动距离,并且移动盒子
        // (3) 离开手指 touchend:
    
        var div = document.querySelector('div');
        var startX = 0;//声明手指的初始做标
        var startY = 0;
        var x = 0;//声明盒子原来的位置
        var y = 0;
    
        //1 触摸手指
        div.addEventListener('touchstart',function (e) {
            //拿到第一个手指坐标值
            startX = e.targetTouches[0].pageX;
            startY = e.targetTouches[0].pageY;
            //拿到盒子的初始位置
            x = this.offsetLeft;
            y = this.offsetTop;
        });
        //2 移动手指
        div.addEventListener('touchmove',function(e){
            //计算手指的移动距离 = 手指移动之后的坐标 - 移动之前的坐标
            var moveX = e.targetTouches[0].pageX - startX;//e.targetTouches[0].pageX 得到移动手指移动后的x坐标
            var moveY = e.targetTouches[0].pageY - startY;
    
            //移动盒子 = 盒子原来的位置 + 手指移动的距离
            this.style.left = x + moveX + 'px';
            this.style.top  = x + moveY + 'px';
            e.preventDefault();//阻止屏幕默认的滚动行为
        });
    </script>
    </body>
    </html>
  • 相关阅读:
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Path Sum
    Symmetric Tree
    Solve Tree Problems Recursively
    632. Smallest Range(priority_queue)
    609. Find Duplicate File in System
    poj3159最短路spfa+邻接表
  • 原文地址:https://www.cnblogs.com/fuyunlin/p/14471575.html
Copyright © 2011-2022 走看看