vue3画矩形可拖拽移动,可拖拽更改尺寸大小,可填充矩形颜色,矩形内部写文字。保存坐标
1条回答 默认 最新
- Nymph_Zhu 2024-08-05 13:41关注
父组件代码:
<template> <Rectangle :initialX="300" :initialY="100" :initialWidth="200" :initialHeight="100" :initialColor="'red'" text="demo" /> </template> <script> import Rectangle from './rectangle.vue'; export default { components: { Rectangle } }; </script>
子组件代码:
<template> <div class="rectangle" :style="style" @mousedown="initDrag" > <div class="content" v-if="text">{{ text }}</div> </div> </template> <script> import { reactive, computed } from 'vue'; export default { props: { text: String, initialX: Number, initialY: Number, initialWidth: Number, initialHeight: Number, initialColor: String, }, setup(props) { const state = reactive({ isDragging: false, x: props.initialX, y: props.initialY, width: props.initialWidth, height: props.initialHeight, color: props.initialColor, }); const saveState = () => { // 保存状态逻辑,例如使用localStorage }; const style = computed(() => ({ position: 'absolute', left: `${state.x}px`, top: `${state.y}px`, width: `${state.width}px`, height: `${state.height}px`, backgroundColor: state.color, })); const initDrag = (event) => { state.isDragging = true; const offsetX = event.clientX - state.x; const offsetY = event.clientY - state.y; const move = (event) => { if (state.isDragging) { state.x = event.clientX - offsetX; state.y = event.clientY - offsetY; } }; const stopMove = () => { state.isDragging = false; document.removeEventListener('mousemove', move); document.removeEventListener('mouseup', stopMove); saveState(); }; document.addEventListener('mousemove', move); document.addEventListener('mouseup', stopMove); }; return { state, style, initDrag, }; }, }; </script> <style scoped> .rectangle { cursor: move; border: 1px solid black; } .content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; user-select: none; } </style>
解决 无用评论 打赏 举报
悬赏问题
- ¥20 limma多组间分析最终p值只有一个
- ¥15 nopCommerce开发问题
- ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
- ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
- ¥15 pycharm输出和导师的一样,但是标红
- ¥15 想问问富文本拿到的html怎么转成docx的
- ¥15 我看了您的文章,遇到了个问题。
- ¥15 GitHubssh虚拟机连接不上
- ¥15 装完kali之后下载Google输入法 重启电脑后出现以下状况 且退不出去 桌面消失 反复重启没用
- ¥15 ESP-IDP-BLE配网连接wifi