vue3实现可视化原型图设计稿ui拖拽设计编辑器代码
代码语言:html
所属分类:布局界面
代码描述:vue3实现可视化原型图设计稿ui拖拽设计编辑器代码,可拖拽组件,还可导出导入json数据,ai生成ui原型图,多页面管理。
代码标签: vue 可视化 原型图 ui 拖拽 设计 编辑器 代码 设计稿
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>原型图设计平台</title> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/font-awesome-4.7.0/css/font-awesome.min.css"> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue.global.prod.3.5.17.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/Sortable.1.15.0.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vuedraggable.umd.4.1.0.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/echarts.5.4.2.js"></script> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #f5f7fa; height: 100vh; overflow: hidden; } .design-platform { display: flex; height: 100vh; } /* 顶部工具栏 */ .top-toolbar { position: fixed; top: 0; left: 0; right: 0; height: 60px; background: #1e3a8a; color: white; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; z-index: 1000; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .logo { font-size: 20px; font-weight: bold; } .toolbar-actions { display: flex; gap: 15px; } .btn { padding: 8px 16px; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; transition: all 0.3s; display: flex; align-items: center; gap: 5px; } .btn-primary { background: #3b82f6; color: white; } .btn-primary:hover { background: #2563eb; } .btn-secondary { background: rgba(255,255,255,0.1); color: white; border: 1px solid rgba(255,255,255,0.2); } .btn-secondary:hover { background: rgba(255,255,255,0.2); } /* 左侧面板 */ .left-panel { width: 280px; background: white; border-right: 1px solid #e5e7eb; margin-top: 60px; overflow-y: auto; flex-shrink: 0; } .panel-tabs { display: flex; border-bottom: 1px solid #e5e7eb; } .tab { flex: 1; padding: 12px; text-align: center; cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.3s; } .tab.active { color: #1e3a8a; border-bottom-color: #1e3a8a; background: #f8fafc; } .tab:hover { background: #f8fafc; } /* 组件库 */ .components-library { padding: 20px; } .component-category { margin-bottom: 20px; } .category-title { font-weight: 600; margin-bottom: 10px; color: #374151; font-size: 14px; } .component-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; } .component-item { padding: 15px 10px; border: 1px solid #e5e7eb; border-radius: 6px; text-align: center; cursor: grab; transition: all 0.3s; background: white; } .component-item:hover { border-color: #3b82f6; box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15); } .component-item:active { cursor: grabbing; } .component-icon { font-size: 20px; color: #3b82f6; margin-bottom: 5px; } .component-name { font-size: 12px; color: #6b7280; } /* 页面管理 */ .pages-panel { padding: 20px; } .page-item { display: flex; align-items: center; padding: 10px; border: 1px solid #e5e7eb; border-radius: 6px; margin-bottom: 8px; cursor: pointer; transition: all 0.3s; } .page-item:hover { background: #f8fafc; } .page-item.active { background: #eff6ff; border-color: #3b82f6; } .page-info { flex: 1; margin-left: 10px; } .page-name { font-weight: 500; color: #374151; } .page-type { font-size: 12px; color: #6b7280; } /* 主设计区域 */ .main-content { flex: 1; display: flex; flex-direction: column; margin-top: 60px; overflow: hidden; } .canvas-toolbar { height: 50px; background: white; border-bottom: 1px solid #e5e7eb; display: flex; align-items: center; padding: 0 20px; gap: 15px; } .device-toggle { display: flex; background: #f3f4f6; border-radius: 6px; overflow: hidden; } .device-btn { padding: 6px 12px; border: none; background: transparent; cursor: pointer; transition: all 0.3s; } .device-btn.active { background: #3b82f6; color: white; } .canvas-container { flex: 1; display: flex; justify-content: center; align-items: flex-start; padding: 20px; overflow: auto; background: #f9fafb; } .canvas { background: white; border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.1); position: relative; transition: all 0.3s; } .canvas.mobile { width: 375px; min-height: 667px; } .canvas.desktop { width: 1200px; min-height: 800px; } .canvas.tablet { width: 768px; min-height: 1024px; } .drop-zone { min-height: 100%; padding: 20px; position: relative; } .drop-zone .sortable-ghost { opacity: 0.5; background: #eff6ff; border: 2px dashed #3b82f6; } /* 组件样式 */ .canvas-element { position: relative; margin-bottom: 15px; cursor: pointer; transition: all 0.3s; border: 2px solid transparent; border-radius: 4px; } .canvas-element:hover { border-color: #93c5fd; } .canvas-element.selected { border-color: #3b82f6; } .element-controls { position: absolute; top: -30px; right: 0; display: none; gap: 5px; } .canvas-element:hover .element-controls, .canvas-element.selected .element-controls { display: flex; } .control-btn { width: 24px; height: 24px; border: none; border-ra.........完整代码请登录后点击上方下载按钮下载查看
网友评论0