Leafer实现canvas画布画板拖动代码
代码语言:html
所属分类:其他
代码描述:Leafer实现canvas画布画板拖动代码
代码标签: Leafer canvas 画布 画板 拖动 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>LeaferUI - 流程图编辑器示例</title>
<script src="https://unpkg.com/leafer-ui@2.1.0/dist/web.min.js"></script>
<script src="https://unpkg.com/@leafer-in/view@2.1.0/dist/view.min.js"></script>
<script src="https://unpkg.com/@leafer-in/viewport@2.1.0/dist/viewport.min.js"></script>
<style>
:root {
--bg: #1a1d23;
--panel-bg: #252830;
--text: #e0e0e0;
--text-secondary: #a0a4b0;
--accent: #5b9bd5;
--accent-hover: #6db5f0;
--danger: #e0556a;
--danger-hover: #f0657a;
--border: #3a3d45;
--shadow: 0 4px 24px rgba(0, 0, 0, 0.4);
--radius: 10px;
--transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', sans-serif;
background: var(--bg);
overflow: hidden;
height: 100vh;
width: 100vw;
user-select: none;
-webkit-user-select: none;
-webkit-tap-highlight-color: transparent;
}
/* 画布容器 */
#canvas-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
cursor: grab;
background:
radial-gradient(circle at 50% 50%, #1f2329 0%, #181a1f 100%),
repeating-linear-gradient(0deg,
transparent,
transparent 39px,
rgba(255, 255, 255, 0.015) 39px,
rgba(255, 255, 255, 0.015) 40px),
repeating-linear-gradient(90deg,
transparent,
transparent 39px,
rgba(255, 255, 255, 0.015) 39px,
rgba(255, 255, 255, 0.015) 40px);
}
#canvas-container:active {
cursor: grabbing;
}
#canvas-container.grabbing {
cursor: grabbing;
}
/* 顶部工具栏 */
.toolbar {
position: fixed;
top: 16px;
left: 50%;
transform: translateX(-50%);
z-index: 100;
display: flex;
gap: 8px;
background: var(--panel-bg);
border: 1px solid var(--border);
border-radius: 28px;
padding: 6px 8px;
box-shadow: var(--shadow);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
}
.toolbar button {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 10px 18px;
border: 1px solid transparent;
background: transparent;
color: var(--text);
border-radius: 22px;
cursor: pointer;
font-size: 13px;
font-weight: 500;
letter-spacing: 0.3px;
transition: var(--transition);
white-space: nowrap;
font-family: inherit;
outline: none;
}
.toolbar button:hover {
background: rgba(255, 255, 255, 0.06);
border-color: var(--border);
}
.toolbar button:active {
background: rgba(255, 255, 255, 0.1);
transform: scale(0.96);
}
.toolbar button.accent {
background: var(--accent);
color: #fff;
border-color: var(--accent);
font-weight: 600;
}
.toolbar button.accent:hover {
background: var(--accent-hover);
}
.toolbar button.danger {
background: transparent;
color: var(--danger);
border-color: transparent;
}
.toolbar button.danger:hover {
background: rgba(224, 85, 106, 0.12);
border-color: rgba(224, 85, 106, 0.3);
color: var(--danger-hover);
}
.toolbar .divider {
width: 1px;
background: var(--border);
margin: 4px 4px;
border-radius: 1px;
}
.toolbar .zoom-label {
display: flex;
align-items: center;
padding: 10px 14px;
color: var(--text-secondary);
font-size: 13px;
font-weight: 500;
letter-spacing: 0.3px;
min-width: 52px;
justify-content: center;
font-variant-numeric: tabular-nums;
font-family: 'SF Mono', 'Cascadia Code', 'Consolas', monospace;
.........完整代码请登录后点击上方下载按钮下载查看















网友评论0