uni-app实现元素拖动:movable-area与movable-view组件应用
作者:清欢时间:2026-10-31 10:04:11浏览:173
本文介绍在uni-app中利用movable-area和movable-view组件实现元素拖动的具体方法。通过示例代码展示如何配置组件属性以支持全方向拖动,并展示最终效果。
在uni-app开发中,实现页面元素的拖动功能是一个常见需求。
具体的代码实现如下所示。
<template>
<movable-area class="music-layout">
<movable-view class="img-layout" :x="x" :y="y" direction="all">
<img :src="musicDetail.bgUrl" :class="[ isPlay ? 'rotate-img' : '']" @click="onImgClick">
<view class="small-circle"></view>
</movable-view>
</movable-area>
</template>
<script>
export default {
name: "music-icon",
props: {
musicDetail: {
type: Object,
default: {}
}
},
data() {
return {
innerAudioContext: {},
x: 300,
y: 500,
isPlay: true,
}
},
watch: {
musicDetail: {
handler(newVal, oldVal) {
if (newVal.music) {
this.handlePlay();
}
},
immediate: true
}
},
methods:{
handlePlay() {
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.src = this.musicDetail.music;
this.innerAudioContext.startTime = 0;
this.innerAudioContext.play();
this.innerAudioContext.loop = true; // 循环播放
},
onImgClick() {
this.isPlay = !this.isPlay;
if (this.isPlay) {
this.innerAudioContext.play();
} else {
this.innerAudioContext.pause();
}
}
}
}
</script>
<style scoped lang="scss">
.music-layout {
height: 100vh;
width: 750rpx;
top: 0;
position: fixed;
pointer-events: none; //鼠标事件可以渗透
}
.img-layout {
position: relative;
width: 100rpx;
height: 100rpx;
border-radius: 50%;
overflow: hidden;
pointer-events: auto; //恢复鼠标事件
img {
width: 100%;
height: 100%;
border-radius: 50%;
}
.small-circle{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 20rpx;
height: 20rpx;
background-color: white;
border-radius: 50%;
}
}
.rotate-img {
width: 80rpx;
height: 80rpx;
border-radius: 50%;
transform-origin: center center;
animation: rotate 5s infinite linear;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
</style>该功能主要依赖于uni-app提供的movable-area和movable-view这两个组件进行配合使用。
以下是拖动效果的直观展示。

以上就是关于在uni-app中实现元素拖动的详细介绍,更多相关uni-app元素拖动内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
作者最新文章
JS转整数出现NaN怎么办?常见异常处理方案
2026-11-05 16:27:31
推荐几款免安装的在线JS压缩工具
2026-11-05 14:54:53
JS怎么使用JSON.stringify实现JSON格式化与缩进
2026-11-04 10:47:30
CodePen、JSFiddle 与 StackBlitz:主流 JS 在线编辑器对比
2026-11-03 21:07:49
JS字符串转数字后怎么正确判断是否为有效数值
2026-11-03 20:04:15
