diff --git a/client/src/components/base/AppPageHeader.vue b/client/src/components/base/AppPageHeader.vue index 015d5ca..9ce8688 100644 --- a/client/src/components/base/AppPageHeader.vue +++ b/client/src/components/base/AppPageHeader.vue @@ -1,21 +1,59 @@ @@ -49,9 +87,53 @@ withDefaults( gap: var(--space-3); flex: none; } + +/* 返回按钮(左段) */ +.page-head__back { + display: grid; + place-items: center; + width: 36px; + height: 36px; + flex: none; + border-radius: 50%; + background: var(--bg-card); + border: 1px solid var(--border-subtle); + color: var(--text-secondary); + cursor: pointer; + transition: background var(--motion-hover-fast) var(--ease-default); +} +.page-head__back:hover { + background: var(--bg-soft); +} + +/* 详情/子页返回头:紧凑行内布局 */ +.page-head--detail { + align-items: center; + gap: var(--space-3); +} +.page-head--detail .page-head__title { + display: flex; + align-items: center; + gap: var(--space-3); +} +.page-head--detail h1 { + font-size: var(--fs-h3); + font-weight: var(--fw-h1); +} + @media (max-width: 767px) { .page-head--stack { flex-direction: column; } + /* 吸顶(替代原 layout topbar;负边距让背景铺满屏宽) */ + .page-head--sticky-mobile { + position: sticky; + top: 0; + z-index: 30; + margin-left: calc(-1 * var(--padding-mobile)); + margin-right: calc(-1 * var(--padding-mobile)); + padding: var(--space-2) var(--padding-mobile); + background: var(--bg-canvas); + } } diff --git a/client/src/layouts/MobileLayout.vue b/client/src/layouts/MobileLayout.vue index 545e35b..b1b9c6c 100644 --- a/client/src/layouts/MobileLayout.vue +++ b/client/src/layouts/MobileLayout.vue @@ -1,22 +1,13 @@