vue 移动端 拖拽

创建一个div,因为是移动端的,所以用touchmove事件,触发一个函数。

<template>
  <div>
      <div class="active" id="active" :style="{top:top,left:left}" @click="onClick" @touchmove="onmove" >
          <span class="iconfont icon-youjianduanxin"></span>
      </div>
  </div>
</template>

上边div里有一个动态绑定的style样式,是因为给这个div加了定位,之后需要动态设置坐标,为了简单所以使用。
这样就需要在data中定义一个 X轴(left),Y轴(top)初始化的一个位置。

 data: function() {
    return {
        left:"330px",
        top:"300px"
    };
  }

同时上边绑定了一个移动事件触发的函数是onmove,就需要在method中定义一个函数

onmove(event){
        //通过console.log可以查找到在event中的touches里有一个下标为零的地方里有x轴和y轴的坐标
        // console.log(event.touches[0].clientX)
        // console.log(event.touches[0].clientY)
        //阻止默认事件,如果不添加,拖动时,内容会跟着跑。
        event.preventDefault();
         //拿到坐标
        let X=event.touches[0].clientX;
        let Y=event.touches[0].clientY;
        //这个减35是因为我的那个div设置的高度是70为了取中心点,所以X轴和Y轴各减35
        let num=X-35;
        let num2=Y-35;
        //再给data中的属性赋值,这样就会让拖拽的元素跟着跑了。
        this.left=num+"px";
        this.top=num2+"px";
    }

样式

<style scoped>
/* @import url(); 引入css类 */
.active
{
    width:70px;
    height:70px;
    background-color: #007AFF;
    border-radius:50%;
    text-align: center;
    line-height: 70px;
    position: fixed;
}
.iconfont 
{
    font-size: 30px;
    color:#fff;
}
</style>

这样拖拽组件就完成了,哪里需要引到哪里

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值