自定义拖拽

1.在data中定义name,和一个空数组

       data(){
          return{      
                name:"",//数据绑定
                list:[],//接收数据
            }
        },

2.在模板中显示位置

     <input type="text" v-model="name" @keyup.enter="add">
      
      <div class="down">
           <div class="every" v-for="(item,index) in list" :key="index" 
              :style="{background:item.color,left:item.x+'px',top:item.y+'px'}"
              v-drag 
             
           >
               <span >{{item.name}}</span>
           </div>
       </div>

3.在 directives自定义指令中进行操作

​
     directives:{
            drag:{ //指令名 通过 v-drag来使用
                inserted(el){//钩子
                    el.onmousedown=(e)=>{//获取按下的位置
                        console.log(e)
                        var left =e.x -el.offsetLeft
                        var top =e.y -el.offsetTop
                     document.onmousemove=e=>{//移动的位置
                         el.style.left =e.x-left+'px'
                         el.style.top=e.y-top+'px'
                     }   
                     document.onmouseup=()=>{//离开
                         document.onmousemove=null
                     }
                    }
                }
            }
        },

​

4.css样式

   .down{
        width: 100%;
        position: relative;//相对
        .every{
            position: absolute;//绝对
             padding: 20px;
            margin-bottom: 30px;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值