diff --git a/src/components/BottomDock.vue b/src/components/BottomDock.vue index a9d4a1c..8363fb4 100644 --- a/src/components/BottomDock.vue +++ b/src/components/BottomDock.vue @@ -1,19 +1,131 @@ @@ -23,16 +135,123 @@ left: 50%; bottom: 16px; transform: translateX(-50%); + z-index: 20; display: flex; align-items: center; - gap: 6px; - padding: 6px 12px; + gap: 2px; + padding: 4px 6px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg3); box-shadow: 0 6px 24px rgb(0 0 0 / 0.45); } -.todo { + +/* ---- 缩放 ± 与适应画布按钮 ---- */ +.zbtn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + padding: 0; + border: none; + border-radius: 999px; + background: transparent; color: var(--fg-dim); } +.zbtn:hover:not(:disabled) { + background: var(--bg2); + color: var(--fg); +} +.zbtn:disabled { + opacity: 0.35; + cursor: default; + background: transparent; +} + +.vsep { + width: 1px; + height: 16px; + background: var(--line); + margin: 0 4px; +} + +/* ---- 百分比按钮 ---- */ +.pct { + display: inline-flex; + align-items: center; + gap: 2px; + height: 26px; + min-width: 64px; + padding: 0 6px; + border: none; + border-radius: 999px; + background: transparent; + color: var(--fg); +} +.pct:hover, +.pct.open { + background: var(--bg2); +} +.pct-num { + font-variant-numeric: tabular-nums; + font-size: 12px; + font-weight: 600; +} +.pct-caret { + display: inline-flex; + color: var(--fg-dim); +} + +/* ---- 缩放菜单 ---- */ +.menu { + position: absolute; + left: 50%; + bottom: calc(100% + 10px); + transform: translateX(-50%); + z-index: 2; + min-width: 172px; + padding: 4px; + border: 1px solid var(--line); + border-radius: 10px; + background: var(--bg3); + box-shadow: 0 8px 28px rgb(0 0 0 / 0.5); + text-align: left; +} + +.mrow { + display: flex; + align-items: center; + gap: 8px; + width: 100%; + height: 30px; + padding: 0 8px; + border: none; + border-radius: 6px; + background: transparent; + color: var(--fg); + font-size: 12px; + text-align: left; +} +.mrow:hover { + background: var(--bg2); + color: var(--fg); +} +.mrow .mark { + width: 14px; + text-align: center; + color: var(--accent); + font-size: 11px; +} +.mrow .hint { + margin-left: auto; + color: var(--fg-dim); + font-size: 11px; +} + +.msep { + height: 1px; + background: var(--line); + margin: 4px 6px; +} diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index 0e95422..f58a703 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -1,32 +1,321 @@