vue项目动态拖动生成元素的实现以及不同屏幕的适配

 

详图

需求描述:

右边标签栏中的每个标签都可以被拖动,是目标元素。左边每个矩形框是容器,要做到三点。

一:标签拖到对应的容器范围内部后要在容器内部添加一个固定样式的元素

二:容器(矩形框)的数量不固定,可以任意删除,也可以从尾部增加

三:已被拖动到容器的元素可被删除,也可以拖动到其他容器里面(移动)

代码分析:

一:拖动的实现

二:拖动结束,元素位置的确定

三:数据的处理

首先是拖动的实现:

1.为需要拖动的目标元素添加属性 draggable = "true"

<div class="tagSet">
   <span v-for="item in tagSet" :key="item.id" :draggable="true"   
    @dragend.stop="dragEnd($event, item)">
       {
  {item.name}}
   </span>
</div>

其中dragend是拖拽结束时候触发的事件,stop为修饰符,也就是拖拽鼠标松开时触发的事件,里面的方法一会详解

2.鼠标禁止样式的取消

      在拖动的时候发现鼠标的样式是禁止样式,就是一个黑圆圈内部一个斜杠,很不好看。可以通过对容器添加@dragenter.prevent @dragover.prevent属性来解决。

<div class="bigrule" @dragenter.prevent @dragover.prevent>

这里的容器不仅仅指的是那些矩形框,我是给整个页面的那个大盒子加了这个属性,这样拖动的时候在整个大盒子里面鼠标的样式都是我想要的,如果仅仅给那三个框加这个属性,那么在鼠标还没到框的时候就还会出现禁止图标,这可以根据个人的需求自己选择。

至此,拖动功能已经实现,接下来是放置功能

上代码

结构部分

<el-card class="box-card secondCard" v-for="(item, index) in rule" :key="index">
   <
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值