uniapp 拖拽,

从一个div拖拽到另一个div放置,改变数据

1.使用插件vuedraggable

vue-draggable官方中文文档

	
	<draggable class="arrays" el="view" v-model="materialList" 
        :group="{name: 'drag', pull: 'clone'}"
		:sort="false" draggable=".material" :options="{sort: false}">
	  <view class="material" v-for="(item, index) of materialList" :key="index"
					@touchend="(v) => touchend(item, v, index)" v-if="!item.hidden">
		<img :src=" item.url" alt="" style="width: 100%;height: 100%;"></view>
	</draggable>
	<draggable el="div" class="correctDiv" v-model="correctList" 
        :group="{name: 'drag', pull: false}"	:sort="false">
	  <view class="material" v-for="(item, index) of correctList" :key="index" >
		<img v-if=" item" :src=" item.url" style="width: 100%;height: 100%;">
	  </view>
	</draggable>
2.判断是否放置进入div

图1 为当前div位置,根据 uni.createSelectorQuery().select('.class')获取,

图2为拖拽结束事件后位置


 

touchend(item, v, index) {   
 let obj = uni.createSelectorQuery().select('.class') // 需要拖拽元素父级class
	obj.boundingClientRect((data) => { // data - 各种参数
				    	const obj2Data = {
						left: v.changedTouches[0].clientX, // v为事件$event
						right: v.changedTouches[0].pageX,
						top: v.changedTouches[0].pageY,
						bottom: v.changedTouches[0].clientY
					}
					// console.log(data.left, obj2Data.left, 'left', data.right, obj2Data.right, 'right')
					// console.log(data.bottom, obj2Data.bottom, 'bottom', data.top, obj2Data.top, 'top')
				
					if (this.check(obj2Data, data)) {
                       // 拖拽进入    
					
					}

	}).exec()
},
check(obj1, obj2) {
				//判断元素是否接触元素
				if (obj2.left > obj1.right || obj2.right < obj1.left || obj2.top > 
                   obj1.bottom || obj2.bottom < obj1.top) {
					console.log('没进入')
					return false;
				} else {
					console.log('进入')
					return true;
				}
				// 判断元素被拖放到指定元素内
				// if (obj1.left < obj2.right && obj1.left > obj2.left && obj2.bottom > 
                  obj1.bottom && obj1.top > obj2.top) {
				// 	return true
				// } else {
				// 	return false
				// }
			},
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值