微信小程序拖拽有movable-view,但是在字节跳动小程序上面不能用。下面的是用uni写的在字节跳动小程序拖拽的方法,直接上代码 :
<template>
<view class="content">
<view class="drag"
:style="{
transform: `translate(${drag.offsetX}px, ${drag.offsetY}px)`,
MsTransform: `translate(${drag.offsetX}px, ${drag.offsetY}px)`,
MozTransform: `translate(${drag.offsetX}px, ${drag.offsetY}px)`,
WebkitTransform: `translate(${drag.offsetX}px, ${drag.offsetY}px)`,
OTransform: `translate(${drag.offsetX}px, ${drag.offsetY}px)`,
transition: drag.move ? 'none' : 'transform 0.2s ease-in-out',
MsTransition: drag.move ? 'none' : 'transform 0.2s ease-in-out',
MozTransition: drag.move ? 'none' : 'transform 0.2s ease-in-out',
WebkitTransition: drag.move ? 'none' : 'transform 0.2s ease-in-out',
OTransition: drag.move ? 'none' : 'transform 0.2s ease-in-out'
}"
@touchstart="touchstartItem" @touchmove.stop.prevent="touchmoveItem" @touchend="touchendItem">
</view>
</view>
</template>
<script>
export default {
data() {
return {
drag:{
move:false,
initX:0,
initY:0,
offsetX:0,
offsetY:0
}
}
},
onLoad() {
},
methods: {
touchstartItem(e){
let drag=this.drag
drag.move=true
let dot=e.changedTouches[0]
drag.initX=dot.pageX-drag.offsetX
drag.initY=dot.pageY-drag.offsetY
},
touchmoveItem(e){
let drag=this.drag
if(!drag.move) return
let dot=e.changedTouches[0]
drag.offsetX=dot.pageX-drag.initX
drag.offsetY=dot.pageY-drag.initY
},
touchendItem(e){
let drag=this.drag
let dot=e.changedTouches[0]
},
}
}
</script>
<style lang="scss" scoped>
.content{
width: 100%;
padding-top: 100rpx;
height: 100vh;
box-sizing: border-box;
position: relative;
.drag{
display: block;
width: 200rpx;
height: 200rpx;
background-color: #ff6700;
position: relative;
}
}
</style>