vue简单实现拖拽添加数据

拖拽事件和属性

标记 这个很重要!!! 这个决定了拖拽事件的行为。当点击开始拖拽之后,鼠标点击所在的位置就是标记。
dragstart:当单击下鼠标,并移动之后执行。

drag:在dragstart执行之后,鼠标在移动时连续触发。

dragend:当拖拽行为结束,也就是松开鼠标的时候触发。

dragenter:当正在拖拽的元素的标记进入某个Dom元素时触发,自身首先会触发。被进入的Dom元素会触发这个事件。

dragover:当拖拽的元素的标记在进入的Dom元素上移动时触发,在自身移动时也会触发。

dragleave:当拖拽的元素在离开进入的Dom时触发。

H5拖拽属性

draggable:当需要某个元素可以拖拽时,需设置为true,默认为false。选中的文本、图片、链接默认可以拖拽。

DataTransfer对象:该属性用于保存拖放的数据和交互信息,该组件没有使用到,暂忽略。

常规

只需要监听三个事件dragstart、dragenter、dragend。需要知道开始拖拽时的元素是谁,拖拽后去往的元素是哪个,以及最后拖拽的结束。

打破常规

在这里插入图片描述

@dragenter.prevent @dragover.prevent
// 阻止浏览器默认行为,不然会显示一个叉叉,不好看

  • 阻止默认行为

@dragleave.stop=“dragleave($event, ‘main’)”

  • 进入离开当前元素都会触发

@dragend.stop=“dragEnd($event, item)”

  • 放下拖拽内容触发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

	<a-col  :sm="24" :md="12" :xl="6"  class="draggable"  @dragleave.stop="dragleave($event, 'main')">
          <div class="label-head">
                <a-checkbox @change="onAllChange($event,'main')" :checked="checkAllMain">
                   全选
                </a-checkbox>
            </div>
           <div class="drag-center">
            <div  @dragenter.prevent @dragover.prevent v-for="(item,index) in draggableMain" :key="index" :draggable="true" class="drag-card __drag_item"
            @dragend.stop="dragEnd($event, item)">
                <label>
                    <a-checkbox @change="onChange($event,'main',item,index)" :checked="item.check">
                        {{item.name}}
                    </a-checkbox>
                </label>
                <div @click="plusEvent(item)"><a-icon type="plus" /></div>
                <!-- <div style="height:100px">
                {{item.name}}----{{index}}
                </div> -->
            </div>
           </div>
      </a-col>

完成交互
交换Dom位置时,左右有个10%的晃动吧~

<style scoped>
.__drag_item {
  animation: shake .3s;
}
@keyframes shake {
  0% {
    transform: translate3d(-10%, 0, 0);
  }
  50% {
    transform: translate3d(10%, 0, 0);
  }
  100% {
    transform: translate3d(0, 0, 0);
  }
}
</style>

这就是Vue的特性:数据驱动视图

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值