|
|
@@ -2257,16 +2257,22 @@ const mapDataSourceCredits = computed(() => getDataSourceCredits())
|
|
|
顶栏(压矮:56 设计像素)
|
|
|
============================================================ */
|
|
|
/* 顶栏三列:品牌 / 一级模式 / 状态区。
|
|
|
- 票 102:右列的最小宽度从「按内容」改回「按等分」—— **列宽由等分决定,不由内容决定**。
|
|
|
- 此前右列按内容最小宽度兜底,于是内容里任何一点宽度变化(时钟秒针的字体长短不平均、
|
|
|
- 读数换字、chip 增减)都会改写列宽,把中列菜单推着左右移动
|
|
|
- (维护者 2026-11-02 报障:时间一跳,按钮就跟着挪)。
|
|
|
- 右列现在吃等分且内容右对齐,内容再变也只在列内挪,碰不到中列。
|
|
|
- 票 37 当年担心的「右列内容超宽向左溢出压住模式区」,靠的是三个诊断读数 + 时钟
|
|
|
- 一起把右列撑爆;读数已下屏(本票),剩下的内容宽度远小于等分列宽。 */
|
|
|
+ 票 102:右列的 `min-content` 兜底**保留**,但让它先变成「与秒针无关」的常量。
|
|
|
+ 维护者 2026-11-02 报障「时间一跳,按钮就跟着挪」:右列宽度按内容最小宽度兜底,
|
|
|
+ 而内容里的时钟读数每换一次数字宽度就变一次(字体长短不平均),列宽随之改写,
|
|
|
+ 中列(一级模式)被推着左右移动。
|
|
|
+ 真凶是**时钟的不定宽**,不是 min-content 本身 —— 时钟改成固定宽度数字槽位(见
|
|
|
+ .cockpit-shell__clock)后,这一列的 min-content 只剩按钮标签与槽位这两个常量,
|
|
|
+ 不再随时间变化;于是两条要求同时成立:
|
|
|
+ - 位置稳定:列宽要么取这个常量下限、要么取 1fr 等分,两者都不看秒针脸色;
|
|
|
+ - 不压到菜单:下限仍在,窄视口下内容超宽时不会像票 37 那样向左溢出压住「预警处置」
|
|
|
+ (最宽内容 = 归位/进入 + 返回全球 + 128u 槽位 + 间隙与内边距 ≈ 293u;最紧的一档
|
|
|
+ 1024×640(--u 落到 1px 下限)等分给到 314px > 293px,取的是等分而不是下限)。
|
|
|
+ 曾试过把它改成 `minmax(0, 1fr)`:抖动同样消除,但顺手撤掉了票 37 的溢出兜底,
|
|
|
+ 窄视口会退回「归位压预警处置」那个老问题,故不取。 */
|
|
|
.cockpit-shell__topbar {
|
|
|
display: grid;
|
|
|
- grid-template-columns: minmax(240px, 1fr) auto minmax(0, 1fr);
|
|
|
+ grid-template-columns: minmax(240px, 1fr) auto minmax(min-content, 1fr);
|
|
|
align-items: center;
|
|
|
gap: calc(12 * var(--u));
|
|
|
height: calc(52 * var(--u));
|
|
|
@@ -2412,7 +2418,13 @@ const mapDataSourceCredits = computed(() => getDataSourceCredits())
|
|
|
所以选中态切换、读数变化都改不了按钮位置。
|
|
|
用 transform 而不是 margin:margin 会把中列让出的空位再分给左右两列,
|
|
|
等于把「谁推菜单」的裁决权交还给内容;translateX 是纯视觉偏移,几何仍居中。
|
|
|
- 32u 是按 1920×1080(--u=1px 档)实测「略微左移」的幅度,与顶栏其余尺寸同一套 --u。 */
|
|
|
+ 32u 的幅度按 CSS 几何算(未跑浏览器,AGENTS.md):菜单组宽 372u(4 枚按钮各
|
|
|
+ 4 字 ×14u + 2×17u 内边距 = 90u,加 3×4u 间隙),原本正好居中;左移 32u 后
|
|
|
+ 左缘 = W/2−218u、右缘 = W/2+154u。会挡路的只有两根翼线(top:58%,与按钮同一
|
|
|
+ 水平带),它们各占 0–170u 与 W−170u–W,不相碰的条件是 W ≥ 776u;而 --u 由高度
|
|
|
+ 决定(1920×1080 → --u=1.3338px → W=1440u,左右各余 332u/396u;最紧的 1024×640
|
|
|
+ → --u 落到 1px 下限 → W=1024u,仍各余 124u/188u)。底边光路贴基线(菜单底缘在
|
|
|
+ 基线上方 4u 出血,是票 17 第八轮的既有关系),本条平移不改它的竖直位置。 */
|
|
|
transform: translateX(calc(-32 * var(--u)));
|
|
|
}
|
|
|
|
|
|
@@ -2489,8 +2501,10 @@ const mapDataSourceCredits = computed(() => getDataSourceCredits())
|
|
|
|
|
|
/* 票 102(维护者:时间字体长短不平均,秒针一跳按钮就跟着左右挪):
|
|
|
时钟改为**固定宽度的数字槽位**,槽位内右对齐 + 等宽数字(tabular-nums + tnum 兜底)。
|
|
|
- 宽度按 2384×1160 截图实测:`--u` 在该视口 ≈1.433px(0.1235vh),一次读数 `21:22:22`
|
|
|
- 的字形跨度 145px ≈ 101u,取 128u(+27% 余量)覆盖「把 1 换成 8」的最宽读数与字体回退
|
|
|
+ 宽度按 2384×1160 截图实测(该图 CSS 视口即 2384×1160、--u=1.4326px;
|
|
|
+ 同图 483px 的导航字形跨度 ÷1.4326 = 337u,与「4×90u+3×4u−2×17u内边距」吻合,
|
|
|
+ 可反证 --u 取值无误):一次读数 `21:22:22` 的字形跨度 145px = 101u,
|
|
|
+ 取 128u(+27% 余量)覆盖「把 1 换成 8」的最宽读数与字体回退
|
|
|
(Rajdhani → Bahnschrift → Segoe,等宽数字不被支持时)—— 槽位只要不吃到内容宽度,
|
|
|
宽度就恒由这条声明决定:秒针跳动只改槽位内的字形,不再改动任何布局宽度。
|
|
|
flex: 0 0 auto —— 槽位不参与挤压,右列内容再多也不会压缩它。 */
|
|
|
@@ -2508,7 +2522,6 @@ const mapDataSourceCredits = computed(() => getDataSourceCredits())
|
|
|
text-shadow: 0 0 12px rgba(1, 171, 234, 0.55);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/* ============================================================
|
|
|
全局筛选条(压矮:38 设计像素)
|
|
|
============================================================ */
|