欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue 移动端 拖拽

程序员文章站 2022-07-14 16:44:58
...

创建一个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>

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

相关标签: vue