Files
wordpress-kratos-yang/assets
laoyang ac1575fbbb fix(theme): 内容块宽度改为流式取值 + 1440px 封顶,消除档位跳变(#31)
现象:窗口从宽拖窄时,中间内容块宽度离散跳档(540/720/960/1280 四档),
档内两侧留白极宽 —— 1920 视口每边白 320px,占整个窗口约 1/3。

根因:bootstrap.min.css 的 .container 只有 4 个固定 max-width 档位,
档内宽度恒定不变,跨断点瞬间跳一格。不是"断点太少",而是宽度只有 4 个取值。

改法(assets/css/site.css +134 行):

1) .container 宽度改成连续函数
     width: min(1440px, 100% - 2 * max(16px, 2.5vw))
   min() 是连续取值,@media 是离散判断 —— 这是两者的本质区别。
   上限 1440 由用户选定;边距 max(16px, 2.5vw) 做窄屏保底 + 宽屏按比例。
   同时 max-width: none 显式压掉 Bootstrap 的 4 个档位(缺它宽屏仍被
   1280 卡住,等于没改)。

2) padding 归零 + .row 负 margin 同步归零
   Bootstrap 原本靠 container 的 15px padding 与 .row 的 -15px margin 相互
   抵消。现在边距由 width 公式承担,padding 必须归零(否则双重扣减,
   窄屏吃 30px);.row 的 -15px 也必须归零(否则内容外顶 15px、贴到容器边)。
   列自身的 15px padding 保留,它是两列间隙的来源。

3) 导航容器单独对齐(三版才修对)
   .k-nav 同时带 Bootstrap 的 .navbar,左右各有 16px padding,容器嵌在
   已内缩的盒子里。直接用正文公式会得到正确宽度但差 16px 位置。
   正确解是同公式 + margin:auto 在已内缩的盒子里居中。
   两个失败版本记在注释里:① calc(100% + 32px) 因 100% 在绝对定位盒里
   解析成视口宽 ⇒ 满宽 320@0;② 负 margin 把容器顶到父级 padding 之外
   ⇒ 左边缘变 0 而非 36。

验证(_tooling/yang_theme_test/,均为线上真实页面 + 拦截替换待发布 CSS):

- _diag_width3.js 改前定量:4 档平台 540×192 / 720×224 / 960×318 / 1280×609,
  跳变 89.5/119.5/158.5px,1920 视口 521 个宽度留白 ≥60px
- _geom31.js 16/0:逐 1px 扫 320~1920 共 1601 档,W1 无固定档位(唯一平台
  1440 封顶段)、W2 单步 ≤2px(实测 1px)、W3 单调、W4 封顶 1440 且对称、
  W5 留白 ≤40px、W6 无横向溢出、W7 三容器一致、W8 正文占比 66.7%、
  W9 正文缩进 15px;四条反证全部红在预期条目
- _shot31.js 33/0:7 档截图 + 表格/代码/图片不溢出、页脚同宽、目录块不越界、
  暗色模式,另含 V4b 防空靶子守卫
- _align31.js 5/0:导航/正文/页脚容器左边缘逐像素一致,logo 与首段偏移
  -31px 跨 7 档零漂移
- _mkzip364.py 43/0 + _mkzip364_falsify.py 11/0(10 条注入全部命中)

侧栏行为按用户要求保持现状(992px 以下隐藏、正文整行),该处宽度变化
是侧栏出现/消失导致,非台阶,不在本版范围。

Refs #31
2026-10-28 09:28:06 +08:00
..