zoukankan      html  css  js  c++  java
  • 移动端多个DIV简单拖拽功能

      移动端多个DIV简单拖拽功能。

      这个demo与之前写的一个例子差不了多少,只是这个多了一层遍历而已。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>移动端多个DIV拖拽</title>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            .container {
                height: calc(100vh);
                overflow: hidden;
            }
            .container ul {
                 100%;
                height: 100%;
                position: relative;
            }
            .container li {
                list-style: none;
                 180px;
                height: 180px;
                background: #f00;
                position: absolute;
                top: 0;
                left: 0;
            }
        </style>
    </head>
    <body>
    
    <div class="container">
        <ul id="list">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
    
    <script>
        window.onload = function(){
    
            var list = document.querySelector('#list');
            var lis = list.getElementsByTagName('li');
            var startX = 0, startY = 0;
    
            for(let i=0; i<lis.length; i++){
                var posL = i * 200;
                lis[i].style.left = posL + 'px';
            }
    
            for(let i=0; i<lis.length; i++){
                var that = this;
                lis[i].addEventListener('touchstart', function(e){
                    console.log(e);
                    startX = e.targetTouches[0].pageX - this.offsetLeft;
                    startY = e.targetTouches[0].pageY - this.offsetTop;
                });
    
                lis[i].addEventListener('touchmove', function(e){
                    console.log(e);
                    var leftX = e.targetTouches[0].pageX - startX;
                    var topY = e.targetTouches[0].pageY - startY;
                    var parentW = e.targetTouches[0].target.offsetParent.clientWidth;
                    var parentH = e.targetTouches[0].target.offsetParent.clientHeight;
                    var thisW = e.targetTouches[0].target.clientWidth;
                    var thisH = e.targetTouches[0].target.clientHeight;
                    var l = parentW - thisW;
                    var t = parentH - thisH;
    
                    if(leftX <= 0){
                        leftX = 0;
                    }
    
                    if(leftX >= l){
                        leftX = l;
                    }
    
                    if(topY <= 0){
                        topY = 0;
                    }
    
                    if(topY >= t){
                        topY = t;
                    }
    
                    this.style.left = leftX + 'px';
                    this.style.top = topY + 'px';
                });
            }
        };
    </script>
    
    </body>
    </html>
  • 相关阅读:
    宏定义中的#
    HDU1506 Largest Rectangle in a Histogram 动态规划
    HDU1864 最大报销额 DP
    POJ2771 Guardian of Decency 最大独立子集
    POJ1698 Alice's Chance 最大流
    HDU1003 Max Sum 动态规划
    eval格式化事件类型的字符串
    C#虚方法virtual详解
    c# 利用反射获得某个类或者对象的所有属性
    windows服务的通常写法
  • 原文地址:https://www.cnblogs.com/SophiaLees/p/9547742.html
Copyright © 2011-2022 走看看