zoukankan      html  css  js  c++  java
  • h5 js拖动div

    刚好闲了一下,于是就写了一个js拖动div的简单例子,项目是vue搭建的大概就是以下内容

    html部分

    <div class="shop-cart-icon" id="shopCart" @touchstart="touchStart($event)" @touchmove="touchMove($event)" @touchend="touchEnd($event)"></div>

    js部分

    data(){
        return{
            x:0,
            y:0,
            cart:null,
            startX:0,
            startY:0,
        }
    },
    mounted(){
        this.cart=document.getElementById('shopCart');
    },
    methods:{
        touchStart(e){
            e.preventDefault();
            this.startX=e.changedTouches[0].clientX;
            this.startY=e.changedTouches[0].clientY;
        },
        touchMove(e){
            this.x=e.changedTouches[0].clientX;
            this.y=e.changedTouches[0].clientY;
            let l=this.startX-this.x;
            let t=this.startY-this.y;
            this.cart.style.transform=`translate3d(${-l}px,${-t}px,0)`;
        },
        touchEnd(e){
            let x=e.changedTouches[0].clientX;
            let y=e.changedTouches[0].clientY;
            //goShopCart
            if(this.startX===x&&this.startY===y){
                this.goShopCart();
            }else{
                this.startX=e.changedTouches[0].clientX;
                this.startY=e.changedTouches[0].clientY;
                this.cart.style.right=0;
                this.cart.style.bottom=0;
                this.cart.style.transform='translate3d(0,0,0)';
                this.cart.style.left=this.startX-20+'px';
                this.cart.style.top=this.startY-20+'px';
            }
        },
    }
        

    因为本身元素定位时用了right和bottom,所以在手指离开的时候就直接给他归零掉,用做left和top,这样就不用去做其他太多计算。

  • 相关阅读:
    vsftpd 启动 vsftpd:500 OOPS: bad bool value in config file for: guest_enable
    Vsftpd服务传输文件(转)
    搭建FTP服务
    sed命令
    创建服务类脚本
    jvm 方法区
    B+与B-树
    适配器模式
    java 垃圾回收总结(可达性分析 引用分类
    HBase常见问题答疑解惑【持续更新中】
  • 原文地址:https://www.cnblogs.com/chao202426/p/12053222.html
Copyright © 2011-2022 走看看