fix(app-iced): 必修2 元信息卡最小宽改由内容推(136 → 160),1180 下网格 2 列
视觉 r2 抓到的回归:上一轮为塞进三列把 `META_CARD_MIN_WIDTH` 收到 136,只算外框、忘了 `card_padding = 20`,卡内只剩 96px —— demo 里 `NeoForge 20.4.237`(实测 118px)与 `NeoForge 21.1.72`(110px)都会按词折成两行,同排另两张卡仍一行 → **卡底不齐**。 - 最小宽改由**卡内最长内容**反推:118(Segoe UI 14px 实测)+ 2×20(令牌 `card_padding`)= 158 → 取 4px 栅格 **160**(值上等于最初的 160,但这次是内容推出来的,不是凑上限凑出来的)。 - 于是元信息网格在 1180 宽落到 **2 列**(2×160 + 12 = 332;3 列要 504 > 行宽上限), 卡内可排 **166px** ≥ 118,所有值单行放下;6 格 = 3 行 2 列。 - 新增单测 `meta_card_is_wide_enough_for_the_longest_value`(此前 39 条 pages 测试没有一条覆盖它): ① 夹具 `NeoForge 20.4.237` 必须仍在 DEMO 里(数据变了就红,提醒重新量); ② `META_CARD_MIN_WIDTH − 2×card_padding ≥ 118`;③ 实际两列布局下每卡内宽也 ≥ 118。 - `meta_grid_drops_columns_as_the_detail_narrows` 跟着改成「上限处 2 列」(1180 与 900 同为 2 列, 差别落在详情列宽 435 vs 404)。
This commit is contained in:
1 parent
dc67be529d
commit
a650f8184b
3 files changed
+53
-13
No files matched your search
@@ -99,11 +99,19 @@ pub const FORM_MIN_WIDTH: f32 = DETAIL_MIN_WIDTH;
|
||||
/// 两列之间的间隙(`Space::X6` = 24)。
|
||||
pub const PANES_GAP: f32 = Space::X6.dp();
|
||||
|
||||
/// 详情里元信息网格的**单卡最小宽度**:三列要塞进 435 的行宽上限 → 3×136 + 2×12 = **432** ≤ 435。
|
||||
/// 详情里元信息网格的**单卡最小宽度 = 由卡内最长内容反推**:**160**。
|
||||
///
|
||||
/// 这一个是跟着行宽上限走的:上限从 504 收到 435 之后,旧的 160 会让三列塞不下
|
||||
/// (3×160 + 24 = 504 > 435),所以同步收窄到 136。四列(4×136 + 36 = 580)从来就没进过上限。
|
||||
pub const META_CARD_MIN_WIDTH: f32 = 136.0;
|
||||
/// 推导(不是凑出来的):
|
||||
/// - 卡内最长值是 demo 里的 `NeoForge 20.4.237`,Segoe UI 14px 实测 **118px**;
|
||||
/// - 卡两侧内边距 `LayoutMetrics::card_padding` = 20,故最小外框 = 118 + 2×20 = **158**;
|
||||
/// - 取 4px 栅格的 **160**(等价于旧值,但这次是**内容推出来的**,不是凑上限凑出来的)。
|
||||
///
|
||||
/// r2 复审抓到的回归:上一轮为了塞三列把这里收到 136,忘了算 padding ——
|
||||
/// 卡内只剩 96px,`NeoForge 20.4.237`(118px)与 `NeoForge 21.1.72`(110px)都会折成两行,
|
||||
/// 同排另两张卡仍一行 → **卡底不齐**。160 之下 3 列要 3×160 + 2×12 = 504,超出行宽上限,
|
||||
/// 所以元信息网格在 1180 宽是 **2 列**(2×160 + 12 = 332,卡内可排 166px,装得下 118)。
|
||||
/// 这也是有意的:mod 加载器版本串只会更长,2 列宽卡比 3 列挤卡更抗将来。
|
||||
pub const META_CARD_MIN_WIDTH: f32 = 160.0;
|
||||
/// 元信息网格卡片间距(`Space::X3` = 12)。
|
||||
pub const META_GAP: f32 = Space::X3.dp();
|
||||
|
||||
@@ -269,7 +277,7 @@ pub fn content_column_width(window_width: f32) -> f32 {
|
||||
available_width(window_width).min(measure_cap_px())
|
||||
}
|
||||
|
||||
/// 元信息网格的列数:3 列需要 432(≤ 行宽上限 435),2 列需要 284,否则 1 列。
|
||||
/// 元信息网格的列数:3 列需要 504(超出行宽上限,1180 下用不到),2 列需要 332,否则 1 列。
|
||||
pub fn meta_columns(width: f32) -> usize {
|
||||
for columns in [3usize, 2] {
|
||||
let needed = columns as f32 * META_CARD_MIN_WIDTH + (columns - 1) as f32 * META_GAP;
|
||||
|
||||
Reference in new issue
Block a user