标题字号折中;软件选择移入右上角汉堡菜单

用户反馈三点:
1. 顶栏图标太大(56px)
2. 顶栏文字反而比内容区还小 —— 主次颠倒
3. 不要再整页显示「选择软件:」,改成右上角三横线按钮,点开下拉选

字号标准(用户给的基准):
  「选择软件」标签 13.5px,比它大两号 ≈ 17px。
  → 顶栏 17px 字 / 30px 图标;内容区 15px 字 / 24px 图标。
  这样 17 > 15,层级正确。

   之前两轮都搞错了:
   - 先给顶栏 46px 图标 + 22px 字:图标过大
   - 再给 56px + 26px:更大
   - 而且内容区当时是 30px,比顶栏还大,视觉上「上面比下面小」

软件选择改造:
- 顶栏右侧新增汉堡按钮(三横线,展开变×)
- 抽屉面板放在 header 内、正文之上,默认 hidden
- 列出软件:图标 + 名字 + 当前项标记
- index.php 删除整行「选择软件:」+ chips
- new.php 表单内也删除那排 chip(同一选择不该出现两次)
- 交互:点击展开/再点收起/点外部关闭/Esc 关闭
- 宽屏抽屉横向排列,窄屏纵向

验证(CDP 驱动真实浏览器):
汉堡按钮存在、初始收起、点击展开、aria 同步、软件条目与当前标记齐全、
再点收起、点外部关闭 —— 全部 PASS;
顶栏字号 17px > 内容区 15px,页面无裸露 ?>;
全部路由 200;窄屏 15px/13px 层级仍正确。
This commit is contained in:
2026-11-03 08:51:20 +08:00
parent 82484298e4
commit 2ef119f7cb
6 changed files with 154 additions and 46 deletions
+62 -15
View File
@@ -32,16 +32,66 @@ p{margin:8px 0}
-webkit-backdrop-filter:saturate(180%) blur(14px);
border-bottom:1px solid var(--line);
}
.topbar .wrap{display:flex; align-items:center; gap:14px; height:72px}
.topbar .wrap{display:flex; align-items:center; gap:14px; height:66px}
.topbar .brand-mini{display:flex; align-items:center; gap:10px; font-weight:700; font-size:17px; color:var(--fg); min-width:0}
.topbar .brand-mini:hover{text-decoration:none; color:var(--fg)}
/* 顶栏里的软件标识:图标与「XX 反馈系统」一起放大,成为页面主标题 */
.topbar .brand-mini .sw-badge{gap:11px}
.topbar .brand-mini .sw-badge-nm{font-size:22px; font-weight:700}
/* 顶栏里的软件标识:17px 字 + 32px 图标 ——
* 比「选择软件」标签(13.5px)大两号,又不至于压过内容区标题。 */
.topbar .brand-mini .sw-badge{gap:9px}
.topbar .brand-mini .sw-badge-nm{font-size:17px; font-weight:700; letter-spacing:.2px}
@media (max-width:560px){
.topbar .wrap{height:62px}
.topbar .brand-mini .sw-badge-nm{font-size:17px}
.topbar .brand-mini .sw-badge-img{width:32px !important; height:32px !important}
.topbar .wrap{height:60px}
.topbar .brand-mini .sw-badge-nm{font-size:15.5px}
.topbar .brand-mini .sw-badge-img{width:26px !important; height:26px !important}
.topbar .brand-mini .sw-badge{gap:7px}
}
/* ---------- 右上角汉堡按钮 + 软件抽屉 ---------- */
.sw-toggle{
flex:none; width:40px; height:40px; padding:0; margin-left:2px;
display:inline-flex; flex-direction:column; align-items:center; justify-content:center; gap:5px;
background:transparent; border:1px solid var(--line); border-radius:10px;
cursor:pointer;
}
.sw-toggle span{
display:block; width:17px; height:2px; border-radius:2px;
background:var(--fg); transition:transform .18s ease, opacity .18s ease;
}
.sw-toggle:hover{border-color:var(--brand); background:var(--brand-soft)}
.sw-toggle[aria-expanded="true"]{border-color:var(--brand); background:var(--brand-soft)}
/* 展开时变成 × */
.sw-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.sw-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.sw-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.sw-panel{
border-top:1px solid var(--line);
background:var(--card);
box-shadow:0 8px 20px -12px rgba(20,30,50,.18);
}
.sw-panel .wrap{padding-top:14px; padding-bottom:16px}
.sw-panel-hd{
font-size:13.5px; font-weight:600; color:var(--muted);
margin-bottom:10px; letter-spacing:.2px;
}
.sw-panel-list{display:flex; flex-direction:column; gap:2px}
.sw-item{
display:flex; align-items:center; gap:10px;
padding:9px 10px; border-radius:10px; color:var(--fg);
}
.sw-item:hover{background:var(--bg, #f6f8fb); text-decoration:none; color:var(--fg)}
.sw-item.on{background:var(--brand-soft)}
.sw-item.on .sw-badge-nm{color:var(--brand); font-weight:700}
.sw-item-cur{
margin-left:auto; font-size:11.5px; font-weight:600; color:var(--brand);
background:var(--card); border:1px solid var(--brand);
padding:1px 8px; border-radius:99px;
}
@media (min-width:561px){
.sw-panel-list{flex-direction:row; flex-wrap:wrap; gap:8px}
.sw-item{padding:7px 12px; border:1px solid var(--line)}
.sw-item.on{border-color:var(--brand)}
.sw-item-cur{margin-left:4px}
}
.topbar .brand-text{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.topbar .logo-mark{
@@ -139,14 +189,11 @@ main.wrap{padding-top:24px; padding-bottom:40px; min-height:60vh}
overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.sw-badge-sm .sw-badge-nm{font-size:14px}
.sw-badge-md .sw-badge-nm{font-size:17px}
.sw-badge-lg .sw-badge-nm{font-size:28px; font-weight:700}
/* 顶栏主标题:图标 + 「XX 反馈系统」,要明显大于正文 */
.sw-badge-brand .sw-badge-nm{font-size:22px; font-weight:700; letter-spacing:.2px}
@media (max-width:560px){
/* 窄屏收一点,避免把「全部问题 / 管理后台」挤掉 */
.sw-badge-brand .sw-badge-nm{font-size:18px}
}
.sw-badge-md .sw-badge-nm{font-size:19px}
.sw-badge-lg .sw-badge-nm{font-size:22px; font-weight:700}
/* 顶栏主标题:比「选择软件」标签(13.5px)大两号 = 17px。
* 之前给到 26px 反而比内容区标题还小,主次颠倒;这里保持克制。 */
.sw-badge-brand .sw-badge-nm{font-size:17px; font-weight:700; letter-spacing:.2px}
/* 页头副行:图标 + 软件名 */
.page-sw-id{margin:0; display:flex; align-items:center}
/* 提交页顶部的软件上下文条:同样无背景色,只留一行轻分隔 */