Journal 详情页上线后,宽屏截图里总有一块说不清的空白:侧栏、正文、右侧大纲挤在左边,大纲再往右是一大片空。过几天又有人切到纸面(亮色),刊头和侧栏已经变浅,正文却停在脏灰底上,黑字贴上去几乎看不清。
两件事不像同一个 bug,根子却都在「主题壳」和「阅读舞台」没分清职责。
样式里曾用过带通配的选择器,凡是 class 名里含有文档相关片段的节点,一律加上较窄的最大宽度。本意只想约束正文列,结果把整行容器(正文 + 大纲)也一起限死了。容器贴在侧栏右侧,后面的视口就空出来。
处理很直接:只给正文和页脚设阅读宽度并居中;外层容器恢复拉满侧栏以右的区域,大纲靠右停住。通配选择器这类「省事写法」,在框架 class 命名一长串时特别容易误伤。
文章页的纸纹背景用 WebGL,为了省电用了按需渲染:不交互就不画下一帧。切到纸面时,CSS 变量已经换成浅色,字色也跟着变深;画布着色器却还停在上一帧的墨色。半透明叠在浅色底上,刚好混出一层泥灰。
修法两处一起做:主题一变就请求重绘,并在插值过程中持续刷新;正文容器再铺一层接近纸面的实底,即使画布慢半拍,阅读区也不至于透出错误中景。
详情页要同时照顾三件事——侧栏导航、阅读列、页内大纲。限宽只限「读」的那一列。氛围层可以省帧,但不能在换肤时睡着。纸面/墨面切换的验收,最好看一眼正文底,而不是只看刊头有没有变。