Tsonglew's Blog

Back

读 V2EX 的后端转前端讨论时,有一处困惑很具体。2024 年 10 月,一位后端开发者说,别人搭好页面以后,自己能修改、联调和部署;从空白开始做界面就卡住了。2025 年的一篇 AI 编程讨论中,也有人担心样式的维护成本,以及界面出错却没有异常可交给 AI 的情况。这些具体问题决定了本课的练习方向。从空白开始做页面的困难界面维护与问题描述

接着上一课的项目准备,这一课要留下可执行的界面说明、一次范围明确的修改,以及附带截图的验收记录。准备浏览器开发者工具和能修改本地文件的 AI 助手,从下载包里的 03-css 目录开始。也可以先打开慢读静态页面,对照样式文件

这份页面只有三条手写资料。搜索表单把关键词写进 URL,列表不会筛选,也没有保存和登录功能。本课验收它的界面,后续课程再处理数据与行为。

先把 03-css 复制为同级的 ui-review 目录,保留 HTML 和样式表,在副本里修改。从示例根目录启动服务后,访问 /ui-review/index.html。把副本路径和视觉规则记进工作簿,第三课会读取这些产物;原始 03-css 继续用作对照。

把参考图写成能核对的要求#

“做得高级一点”留给 AI 的猜测太多。找参考图时,先标明你喜欢的区域与原因。同一张图里,导航结构可以借鉴,文字密度可能不适合慢读。截图最好附上视口尺寸,否则 AI 不知道看见的是桌面全屏,还是手机中的局部。

慢读的任务是选一条资料继续读。界面说明可以沿着这件事展开。

需要说明的内容在慢读里怎样落到页面
结构页头和正文共享左右边界,宽屏侧栏在左,资料区在右,窄屏按文档顺序排成一列
信息层级资料标题最醒目,来源和摘要帮助判断内容,标签与阅读状态放在卡片下方
密度当前三条资料逐条排列,标题允许换行,不要求每张卡片固定高度
字体与间距标题沿用现有衬线字体,说明文字沿用系统字体,相同角色使用相同字号和间距
状态链接有悬停反馈,键盘焦点可见,未读、阅读中、已归档都有文字,不能只靠颜色区分

这里已有不少可以核对的依据。样式把公共容器限制在 72rem 以内,正文行高为 1.7,卡片标题用 1.35rem,摘要用 0.85rem。这些是当前设计选择,适不适合你的内容,需要放进页面比较。若觉得摘要偏小,就先调摘要这一处,观察换行与卡片高度,再决定是否保留。

静态页面没有加载中、搜索无结果和请求失败。给真实项目写界面说明时,要补上这些状态出现的条件、可见文字和下一步操作。只画三张外观相似的卡片,无法说明网络失败后用户该做什么。

统一样式,再决定哪些组件值得引入#

慢读在 :root 里已经定义了 --paper--card--ink--muted--green。这些有名字的设计值可以叫 token。让 AI 调整主题色时,先找这些变量的使用处,避免给按钮、链接、标签分别加一种近似的绿色。CSS 自定义属性可以通过 var() 复用,定义在 :root 的普通自定义属性还能随继承用于后代元素。MDN 的说明解释了其作用域和继承方式。

当前间距还写在各条规则里。如果后面多页都采用同一种卡片,可以把反复出现、含义相同的间距提取成变量。不要看到两个数值碰巧相同就合并,卡片内边距与按钮内边距以后可能分别变化。验收时先核对同类元素是否一致,再判断哪些值值得共用。

组件也按实际需要选择。慢读现有的链接、输入框和提交按钮可以继续使用原生元素。若项目已有组件库,先查它的表单、弹窗和选择器,核对当前版本的文档、键盘行为及主题配置。为了一个弹窗再引入第二套库,往往还得处理字号、间距与焦点样式的差异。

弹窗尤其适合检验复用的价值。一个背景遮罩加白色面板,还要配上打开时的焦点位置、Tab 在弹窗内移动、Escape 关闭,以及关闭后的焦点返回。WAI 的模态对话框模式列出了这些行为。挑现成组件时照样测试,库的名字不能代替验收。慢读的资料卡片只是内容排列,保留自己的结构也很合适。

视觉改进 Prompt#

先保存修改前的页面和截图。下面的空位填真实材料,没有参考图就写“未提供”,不能让 AI 补造一张已经验收过的图。

一次只处理一个主要问题,比较时才知道改动带来了什么。卡片间距刚改完,又重写字体、颜色和侧栏,前后截图即使不同,也很难判断哪项改动值得留下。每轮保留一份可恢复的文件或提交,再继续下一轮。

页面被撑宽时,先找是哪一个盒子#

慢读的三条标题都很短,原页面看着整齐,还不能证明长内容也合适。在本地副本里把一条标题换成“从后端接口走到浏览器页面,记录一次跨设备阅读流程的排错过程”,再给来源文字追加一段连续英文字符。它们是验收数据,测试后可恢复。

如果出现横向滚动,选中越界元素,在 Elements 的 Computed 中看最终 widthmin-widthwhite-spaceoverflow-wrap,再看盒模型里的内边距与边框。向上检查 .resource-content.resource-card.library,记录最先超过父容器的元素。Styles 能找到声明来源,Computed 帮助确认最后应用了什么。Chrome 的 CSS 检查指南有对应入口。

基线有三处相关安排。Grid 的主列使用 minmax(0, 1fr).resource-content 等容器设置了 min-width: 0body 上的 overflow-wrap: anywhere 会继承到文字。Flex、Grid 项目的自动最小宽度可能受到内容尺寸影响;允许容器收缩、允许长字符串换行,分别处理不同条件。两者的准确含义可查 MDN 最小宽度文字换行规则

遇到故障时,先确认这些声明有没有被后来的规则覆盖。若标题最终用了 white-space: nowrap,应沿这条证据继续查。直接给整页加 overflow-x: hidden 会裁掉越界内容,截图里的滚动条消失了,文字仍可能读不全。

样式故障修复 Prompt#

这份模板接在测量之后。空位没有证据时保留“未取得”,让 AI 明确下一步怎么查。

给这一版留下验收记录#

慢读在 48rem 及以下切为单列,卡片内边距也会缩小。检查断点两侧,再检查 320 CSS px 的窄视口。WAI 的重排要求对普通纵向内容采用等效 320 CSS px 的宽度,要求保留信息与功能,并避免阅读时来回横向滚动;地图、数据表等确需二维布局的内容有例外。慢读列表可以按普通内容验收。WAI 重排说明给出了范围。

条件需要观察的结果留下的记录
原始三条资料,固定桌面视口标题突出,同类卡片间距一致写明尺寸的前后截图
长标题与连续字符串内容完整,卡片不越界,不盖住状态窄屏截图与异常元素尺寸
断点两侧及 320 CSS px导航、表单与资料按顺序重排实际视口与横向滚动情况
Tab 和 Shift+Tab焦点可见,顺序可理解,入口可操作键盘操作路径与焦点截图

基线的 :focus-visible 使用 3px 外轮廓,页首还有获得焦点后显示的跳转链接。用 Tab 从顶部开始,确认能看清焦点,再走到输入框、提交按钮和资料链接。填写关键词后提交,预期只检查 URL 变化。WAI 要求键盘使用者能看见焦点位置,删除轮廓后必须有可见的替代样式。焦点可见说明解释了这一要求。

浏览器设备模式能帮助检查视口布局,手机上的字体、软键盘和触摸操作仍需真机补测。截图通过也只覆盖所记录的界面条件。把视觉规则和检查结果填入工作簿的第二课,带着具体页面进入下一课的需求委托

继续查阅时,可以从 Chrome 样式检查WAI 重排要求模态对话框模式开始,分别核对尺寸证据、窄屏条件与复杂控件的交互约定。

后端转全平台 02|把 AI 生成的界面做到可交付
https://tsonglew.github.io/blog/backend-to-platform-interface
Author Tsong Lew
Published at 2026年9月23日