响应式设计规范
面向设计师与工程师:让用户在窗口、容器、方向和输入环境变化时,仍能读懂内容、完成任务,并接着刚才的位置继续操作。
6 条原则 · 24 条规则 · 必须 19 · 应当 5
目录
面向设计师与工程师:让用户在窗口、容器、方向和输入环境变化时,仍能读懂内容、完成任务,并接着刚才的位置继续操作。
响应式设计需要定义空间变化时的产品行为:哪些内容持续可见,哪些内容可以折叠,布局何时重排,以及变化之后任务状态和操作入口如何延续。
本规范由 六条原则、24 条规则、布局示例与验收清单组成。配套文件为《Design Token》和《参考来源与论据边界》。本文的断点、间距和布局示例是建议初始配置,尚未经过具体产品的用户研究与浏览器实测。
1. 适用范围与读法
1.1 适用范围
主要适用于 Web 网站、业务系统、工作台和 Agent 界面,覆盖视口缩放、浏览器分屏、可调整面板、横竖屏、文字放大、软键盘和混合输入场景。原生应用可以参考行为原则,尺寸单位与平台交互需要另行映射;CSS px 不直接等同于设备物理像素、iOS pt 或 Android dp。
本规范管理同一界面在不同可用空间中的表达与连续性。布局调整不得改变操作对象、提交含义或已保存的工作状态。打印、嵌入式页面、竖排文字和折叠屏仅在产品声明支持时进入验收范围;无需为未提供的能力新增界面。
1.2 约束词
- 必须/不得:符合本规范的必要要求。
- 应当/不应当:默认遵循;偏离时记录具体原因、替代方式与验证结果。
- 可以:可选实现,不是每个产品都要新增的能力。
判定以正文中的独立义务子句为单位:无约束词的陈述句承接所在规则标题的强度;显式标注约束词的子句按其自身强度判定——【应当】规则内的「必须/不得/禁止」子句仍是硬要求,规则标题的强度标注不替代子句约束力。表达禁止行为一律用「不得」,「不能」只用于事实或能力陈述,不表达义务。示例、设计应用与反例用于揭示要求与失败路径,不新增义务。
原则用于解释设计方向,不作为独立判定项。规则中的适用与边界限定正文要求;第 4 章示例和第 5 章反例不另行增加义务。每条规则写明适用、要求与验证。示例帮助解释要求,不指定唯一组件或工程框架。来源编号链接到 reference.md;由资料推导的项目规则不冒充来源原文。满足本文不能单独证明符合完整 WCAG 2.2。
2. 六条原则
| 原则 | 管辖对象 | 设计方向 | 规则 |
|---|---|---|---|
| R1 核心任务持续可达 | 内容与操作的取舍 | 随空间调整呈现层次,保留完成任务所需的信息与入口 | R1-1~R1-4 |
| R2 布局依据实际空间 | 测量范围与结构切换 | 根据视口或容器的实际承载能力,决定布局变化 | R2-1~R2-4 |
| R3 内容保持可读 | 排版、伸缩与溢出 | 自然排布、合理限宽,特殊二维内容局部处理 | R3-1~R3-4 |
| R4 变化保持操作连续 | 用户输入、焦点与位置 | 布局切换之后,用户能接着刚才的工作继续 | R4-1~R4-4 |
| R5 交互适应输入与偏好 | 输入能力、热区和运动 | 将空间、输入方式、密度和用户偏好分别处理 | R5-1~R5-4 |
| R6 设计决策可实现可验证 | 交付、Token 与验收 | 把变化条件、数值来源与通过条件写清楚 | R6-1~R6-4 |
每条规则按直接约束对象归属一条原则;同一场景可以同时触发多条规则。例如,面板收起后的入口属于 R1,焦点如何回到入口属于 R4,入口的触控热区属于 R5。这是便于维护的责任划分,不宣称已经通过完整性或互斥性的实证检验。
3. 规则详解
R1 核心任务持续可达
R1-1明确内容与操作优先级必须
适用同一页面需要在不同空间中呈现不同的信息密度。
要求必须按用户任务区分当前主要内容、主要操作、判断所需信息与辅助内容。布局变窄时,必须保留完成当前任务的路径;不得仅因宽度不足移除提交、取消、纠错或必要说明。
验证用同一任务分别在窄窗口和宽窗口完成。检查用户是否能获得相同的必要信息与可用结果,而非仅比较截图中是否存在同名按钮。
R1-2折叠内容保留明确入口必须
适用导航、工具栏、筛选器或辅助面板发生折叠。
要求折叠后的内容必须有可发现、可操作的入口,入口名称或上下文必须能够说明用途。已有筛选、选中项或待处理事项影响当前结果时,必须保留相应提示。不得依赖悬停才能找到折叠后的功能。
验证让用户在面板收起时修改一个已启用的筛选条件;检查其能否理解当前结果为何被过滤,并找到修改位置。
R1-3布局不改变操作语义必须
适用同一操作在不同布局中改变位置、外观或承载组件。
要求同一操作的对象、权限、提交时机与后果必须保持一致。将弹窗换成全屏页面,不得顺带把“预览”变成“发布”,或把关闭界面解释为同意操作。确有业务差异时,必须在操作前说明差异。
验证对照宽窄布局下同一操作的状态变化和业务请求,而非只核对文案。
R1-4Agent 状态与控制入口持续可达必须
适用呈现 Agent 执行、待确认请求或结果的界面。
要求执行区域折叠后,必须保留当前状态及返回执行详情的入口。任务支持停止时,停止入口必须可达;待确认事项必须有可发现的提示,并能打开足以判断后果的完整信息。不得因窗口改变重新发起执行、自动确认请求或把隐藏面板等同于停止任务。
验证执行中缩窄窗口,再依次测试停止、打开待确认事项和查看结果。核对任务标识与执行次数保持一致。
R2 布局依据实际空间
R2-1使用明确的空间测量范围必须
适用任何由尺寸触发的布局变化。
要求必须明确规则测量的是页面视口还是指定容器。不得以设备型号或屏幕物理分辨率代替可用布局空间。页面应当根据视口调整整体结构;可复用组件应当根据所在容器调整内部排列。
测量边界:必须声明物理宽度还是逻辑行内尺寸,并保持查询轴、Token 和验收记录一致。容器查询必须指定负责测量的祖先容器;组件自身因样式变化产生的尺寸不得造成反复切换。
验证在同一个宽窗口中,将同一组件分别放入主区域和窄侧栏,检查各自是否适配。技术参考 S03
R2-2断点由内容容纳能力校准应当
适用建立页面或组件断点。
要求应当先确定主要区域最小可用宽度、间距和内容约束,再确定结构切换阈值。应当用长文本、放大文字和真实内容校准断点。默认预设可以采用 640 / 1024 CSS px,但不得将其表述为所有产品通用的标准断点。
验证记录切换前出现的具体问题,例如“主内容无法容纳必要字段”,而不是仅写“进入平板尺寸”。
R2-3先定义伸缩,再定义结构切换应当
适用卡片集合、表单、工具栏和多栏内容。
要求应当优先使用自然换行、弹性空间、最小宽度与最大宽度;仅在这些方式无法维持可用性时切换结构。每个结构状态应当说明排列、滚动区域和主要操作位置。不得通过整体缩小界面来掩盖内容容纳问题。
能力回退:若依赖容器查询、脚本测量或延迟获取的布局配置,必须预先定义能力不可用时的基础排布。首屏到增强布局的切换不得清空输入或重复呈现可聚焦控件。
验证连续拖动窗口,检查固定截图之间的宽度是否仍然可用,是否出现无必要的布局跳变;禁用增强机制后核对基础任务仍可完成。设计参考 S01、S02
R2-4高度、方向与键盘进入空间判断必须
适用横屏、低高度窗口、固定操作栏、输入框和软键盘场景。
要求必须保证当前输入、必要上下文和下一步操作可以被访问。空间不足时,可以滚动、收起辅助区域或取消固定定位。不得仅按宽度决定固定区域的高度。除特定方向对功能本质必要的情况外,不得限制只能横屏或只能竖屏使用。
边界布局视口、视觉视口和容器尺寸必须分别识别。软键盘可能只缩小视觉视口;100dvh 与安全区 inset 均不得被当成跨浏览器通用的键盘避让保证。固定区域实现必须有可滚动或回到文档流的退路;系统遮挡与作者内容遮挡分开记录。机制 S16
验证在横屏及软键盘弹出时完成长表单和错误修正;检查固定区域与安全区是否遮挡输入或提交。方向要求参考 S09,键盘处理属于本规范的设计要求。
R3 内容保持可读
R3-1常规内容支持重排必须
适用Web 中的常规阅读内容、表单和页面控制区。
要求纵向滚动内容必须能在等效 320 CSS px 宽度下呈现,不丢失信息或功能,也不要求双向滚动;横向滚动内容对应等效 256 CSS px 高度。因用途或含义确需二维布局的区域,按 R3-4 单独处理。
验证检查页面、标题、搜索框、分页和提示内容,而非只检查主体。桌面上可用 1280 CSS px 视口、400% 页面缩放构造约 320 CSS px 的测试条件,实际以测得的视口为准。WCAG 1.4.10,S06
R3-2文字允许放大与自然增长必须
适用正文、标题、标签、提示和文字控件。
要求除 WCAG 1.4.4 中字幕与文字图像的例外外,文字必须能通过用户代理支持的方式放大至 200%,不丢失内容或功能。不得通过断点规则抵消到无法达到所需的放大效果。
换行义务的范围:承载正文、标题、标签、提示的普通文字容器应当能够自然换行与增长;确需单行显示或摘要截断的控件(单行输入框、表格列标题、标签页名称等)不因本条被迫换行,但必须提供可发现且可操作的完整内容获取方式(聚焦或激活后展开、详情页;悬停只能作为补充)。不得以强制换行破坏控件用途,也不得以"有全文入口"为由让普通正文一律截断。
用户覆盖文字间距:作者的默认行高与用户的间距覆盖是两件事。对支持相应文字样式的内容,用户将行高设为字号的 1.5 倍、段后间距 2 倍、字距 0.12 倍、词距 0.16 倍且不改其他样式时,必须不丢失内容或功能。语言或文字系统不使用某属性的,按 WCAG 1.4.12 的例外处理并记录理由。这组测试值是覆盖后的验收条件,不是默认 Token 的下限——标题默认行高 1.25 并不因此违规。
验证测试 100%~200% 的中间状态、中文长标题、较长译文和连续字符串;检查按钮、输入框、错误提示是否裁切。流动字号不能只验证默认缩放。
放大倍率须按实际倍率记录,不按菜单档位记录:记录初始字号、当前字号与实际视觉放大倍率三项,并确认存在受支持的方式达到相对初始文字 200% 的放大。同一档位在不同断点下的实际倍率不同——例如 1440 CSS px 窗口、初始标题 40px,页面缩放 200% 后布局宽度约 720 CSS px、标题取 32px,视觉倍率约 1.6;同一设计在 300% 档位下可达约 2.1。因此不得据某一档位的倍率直接判定符合或违反;判据是"存在受支持的方式达到 200%"。若产品另有"菜单 200% 即文字 200%"的更强承诺,按该承诺单独验证。
文字间距覆盖:中文、拉丁文字与目标语言分别在窄窗口、实际断点两侧与表单错误态下施加适用属性的覆盖;保留默认字号,检查按钮标签、卡片摘要、菜单与错误提示。逐项记录哪些属性不适用及理由。WCAG 1.4.4,S07;1.4.12,S14
R3-3内容宽度与信息密度分别控制应当
适用阅读页、表单、数据工作台和超宽窗口。
要求应当按内容类型设置宽度约束。阅读内容达到合适行长后保留留白;工作台可以将额外空间用于并排比较或辅助内容。不得为填满窗口而无限拉长文字行、放大控件或增加不必要信息。密度应当由任务及输入需求决定,不自动随屏幕宽度变化。
语言与方向:声明支持的语言必须使用真实长内容验证。应当使用逻辑方向表达边距和排列;不得用视觉反序破坏阅读含义。RTL 文本与数字、标识符混排时必须保持标签和对象的对应关系。ch 衡量“0”字形的前进宽度,ic 依赖字体的表意字符度量,都不能保证固定字符数。机制 S18
验证在超宽窗口中完成阅读与比较任务;检查额外空间是否有实际用途。中文与拉丁文字行长应分别检查,不把 ch 当作通用汉字计数单位。
R3-4二维内容的溢出有边界必须
适用数据表格、地图、图表、代码和编辑画布。
要求确需二维布局的内容必须有明确的可操作区域,并保持必要的行列关系、坐标或比较关系。普通表格应当优先将横向滚动限制在表格容器内;例外不得扩展到无关的页面标题、搜索和分页。单元格本身仍需按其内容检查重排要求。
可以按任务采用重点列与详情、局部横向滚动或可缩放画布;不得一律把表格改为卡片而破坏比较任务。普通代码文本不因“是代码”就自动取得二维布局例外,应先评估换行或其他访问方式。
验证在窄视口中查找同一行的字段、比较两条记录,使用键盘访问滚动区域;检查整页是否被无关内容撑宽。例外边界 S06
R4 变化保持操作连续
R4-1输入与业务状态不随布局重置必须
适用窗口变化会重排、替换或重新挂载界面的场景。
要求必须保留已输入内容、选择项、筛选条件与当前任务状态。不得因结构切换重复提交、重新创建任务或覆盖用户尚未提交的编辑。组件的视觉实例变化不得作为重置业务状态的依据。
验证输入未提交内容,在断点附近反复调整窗口,再继续编辑和提交,核对内容完整且业务动作只发生一次。
R4-2焦点与阅读顺序有连续性必须
适用重排、面板折叠、抽屉或对话框形态切换。
要求布局切换时,判据是焦点本身的身份、顺序与可见性是否持续成立,而不是"控件还在、还能点":
- 持有焦点的等义对象仍存在且可用时,焦点必须仍在该对象上——控件可点击但
activeElement已回到body或文档根,记为失败。 - 对象将被隐藏或替换时,组件设计记录必须给出确定的接续目标与恢复规则,不得只写"接续到合理对象"。
- 变化区域内没有焦点时,不得因重排主动抢焦点。
- 不得为了视觉排序造成破坏含义或操作的键盘、辅助技术阅读顺序。
验证焦点分别置于保存按钮、抽屉内部、变化区域之外三种位置,再跨断点切换;每种情形检查焦点对象、下一次 Tab 的落点、关闭后的返回路径。用户侧须能说出自己当前在哪并继续操作;实现侧记录 activeElement、等义对象标识、隐藏状态与所在滚动容器。modal 变为常驻面板时,检查原有的焦点约束是否已解除。焦点顺序参考 S10;跨布局接续方式为本规范推导,不要求特定 DOM 架构。
R4-3保留语义阅读位置与返回路径应当
适用列表—详情、长文、聊天和多步表单。
要求应当优先保留当前阅读对象、选中记录或所在步骤,而非机械保留同一滚动像素。两栏变单栏时,应当提供可理解的返回路径,返回后恢复上下文。不得因宽度调整自动导航到首页或列表顶部。
媒体与异步内容:承载任务信息的图片和视频必须定义缩放、裁切或换图策略,不得裁掉完成任务必需的信息而不提供完整内容访问方式。媒体、字体或异步内容加载时,应当预留空间或维持语义锚点,避免当前阅读对象和操作目标突移。图片机制 S17
验证阅读列表中部的一项详情后切换布局,再返回列表,检查选中项及邻近内容是否容易找到;加入延迟加载图片和字体失败情境重试。
R4-4固定区域与动态内容不夺走控制必须
适用固定导航、底部操作栏、流式输出与自动滚动。
要求固定区域不得使关键内容与操作无法访问。组件获得键盘焦点时,不得被作者创建的固定区域完全遮住;适用例外(用户自行移动的内容、用户主动打开的内容)按 WCAG 2.4.11 判定。应当尽量使获得焦点的对象完整可见——"完全不被遮挡"是更高目标,不是本条的通过底线;"滚动一下就能看到"不构成"焦点当前可见"。用户正在阅读历史内容或编辑时,布局改变或新内容到达不得无条件抢焦点、重置选区或滚动到底部。需要提示更新时,可以提供新内容入口。
验证在窄窗口中阅读旧消息,同时接收新消息、打开键盘和切换面板,检查位置是否可控。固定区域与重排 S06;焦点遮挡 S15
R5 交互适应输入与偏好
R5-1输入能力不由宽度推断必须
适用鼠标、触摸、触控笔、键盘和混合输入。
要求不得将宽窗口等同于精确指针,将窄窗口等同于触摸。悬停可以提供增强反馈,但关键操作与必要说明必须有点击、聚焦或其他可用入口。输入方式改变不得使原有任务失去完成路径。
验证在宽窗口用触摸完成任务,在窄窗口用键盘完成任务。能力查询可以辅助样式选择,但不能代替实际任务验证。S12
R5-2热区与可见尺寸分开定义必须
适用链接、按钮、图标操作和可交互图表元素。
要求必须区分可见图标尺寸、控件尺寸与实际命中区域。Web 指针目标必须满足 WCAG 2.5.8 的 24×24 CSS px 要求或其明确例外。重要触控操作应当以至少 44×44 CSS px 作为本项目的初始设计目标,再验证间距与实际操作表现;不得把这一建议写成 WCAG AA 的统一数值。
验证检查实际命中区域和相邻目标,避免扩大热区后重叠;仅放大图标不等于热区已经满足要求。S08
R5-3密度是独立设计维度应当
适用提供紧凑/舒适密度,或高信息量工作台。
要求密度应当根据任务、输入方式或明确偏好选取,不应当与视口状态锁死。提高密度时仍必须满足阅读、操作与放大要求。空间状态 compact 与密度 dense 必须区分命名和取值。
验证检查“窄窗口+舒适密度”和“宽窗口+紧凑密度”是否都可用。没有密度需求的产品无需新增设置入口。
R5-4布局运动尊重减少动画偏好必须
适用带位移、缩放或持续动画的布局切换。
要求检测到减少动画偏好时,必须取消或显著减少非必要的位移、缩放与持续运动;状态变化仍需通过静态信息或适当替代方式表达。不得依靠转场完成回调才提交业务结果,以免关闭动画后流程无法完成。
验证启用减少动画偏好后切换全部布局状态,检查任务仍能完成、状态仍可理解。机制参考 S13
R6 设计决策可实现可验证
R6-1交付变化规则与中间状态必须
适用新页面、组件和响应式改版。
要求必须交付触发范围、布局行为、持续可达内容、溢出策略和状态接续方式;Web 页面必须保留用户缩放能力。设计稿必须覆盖主要结构状态,并说明状态之间的伸缩行为。不得仅用三张设备尺寸截图代表完整规范。
验证让未参与设计的人依据记录解释任意中间宽度的表现;解释不一致的位置必须补足规则。
R6-2数值 Token 与行为规则建立对应必须
适用使用 Design Token 的设计系统。
要求复用的间距、字号和尺寸必须有明确来源;语义 Token 应当引用基础 Token,组件专属 Token 按实际复用需求建立。交付必须同时包含源值、上下文选择规则和解析后的有效值,相同输入得到相同结果;别名在合法覆盖完成之后解析,组件局部值不反向写入全局。Token 负责数值与引用,规则负责何时折叠、如何返回等行为。当前窗口宽度、焦点对象和任务状态不得存入 Token。
验证修改一个语义 Token,检查受影响组件是否符合预期;检查行为规则没有因改值被默默绕过;用缺失引用、引用环和类型冲突的反例验证解析行为,不以默认尺寸截图代替。格式参考 S04、S05
R6-3连续尺寸与真实内容共同验收必须
适用响应式变更交付。
要求必须测试断点两侧及中间宽度、文字放大、长内容、空状态与输入场景。声明支持的平台必须在相应浏览器或设备中验证。结果必须落到四种状态之一,"未验证"与"不适用"不得混用:
| 结果 | 含义 | 必须记录 |
|---|---|---|
| 通过 | 已验证且满足通过条件 | 环境与证据 |
| 失败 | 已验证且不满足 | 具体规则、触发条件、复现步骤 |
| 未验证 | 应当适用但尚未测 | 缺失的证据与后续责任人 |
| 不适用 | 适用条件不成立 | 该条件为何不成立的理由 |
不得以 Token 合法或设计稿完整替代运行验证,也不得把"没测"记为"不适用"。
验证使用第 5 章清单,记录通过/失败/未验证/不适用及理由;失败修复后复查受影响路径。评审一致性可用两个样本校准:未测的软键盘场景应得"未验证",产品无 Agent 功能的条目应得"不适用"。
R6-4默认值与例外可追溯必须
适用新增断点、覆盖 Token 或为某页面采用不同布局策略。
要求必须标明值来自外部标准、系统默认还是产品实测。覆盖应当限定作用域,并记录原因、关联规则和受影响场景。局部组件需求不得无依据地修改全站断点。
验证检查一个例外是否能追溯到具体内容约束和验证结果,无需另建审批流程。
4. 布局与组件应用示例
4.1 默认空间状态
以下为 Web 起始预设,单位为 CSS px;区间左闭右开,宽度允许小数。640 和 1024 是项目建议值,并非 Material、Carbon 或 WCAG 的统一规定。
| 状态 | 视口宽度 | 典型策略 |
|---|---|---|
compact 紧凑空间 | w < 640 | 优先当前主内容;辅助区域按需打开 |
regular 常规空间 | 640 ≤ w < 1024 | 按内容最小宽度判断是否并排,不强制两栏 |
wide 宽阔空间 | w ≥ 1024 | 空间允许时展示辅助区域;阅读内容继续限宽 |
页面状态不直接决定组件状态。位于窄侧栏中的组件即使处于 wide 页面,也可以使用自身的堆叠布局。无需为超宽屏新增断点,除非确有新的结构行为。
4.2 组件行为矩阵
| 对象 | 空间充足 | 空间不足 | 保留项与约束 |
|---|---|---|---|
| 主导航 | 可见导航或侧栏 | 抽屉、菜单或合适的导航组件 | 当前位置与常用入口;选择符合产品层级的导航方式 |
| 列表—详情 | 并排两栏 | 分步展示,提供返回 | 选中项、筛选和语义位置 |
| 辅助面板 | 并排呈现 | 抽屉或独立页面 | 明确入口、待处理提示和输入状态 |
| 工具栏 | 常用操作展开 | 次要操作收入更多菜单 | 主要操作与操作对象 |
| 表单 | 相关字段可并排 | 按阅读顺序逐行排列 | 标签、错误提示与提交路径 |
| 卡片集合 | 按卡片最小宽度自动排布 | 逐步减少列数 | 顺序、完整内容和可操作性 |
| 表格 | 完整比较布局 | 重点列与详情,或局部横向滚动 | 比较任务决定方案,不一律转卡片 |
| 对话框 | 限宽浮层 | 必要时全屏 | 标题、关闭、提交、焦点与未提交状态 |
| Agent 工作区 | 任务与证据并排 | 主任务优先,证据按需打开 | 状态、停止、确认与结果入口 |
4.3 Web 入口与媒体内容
以下示例说明视口配置、媒体适配与加载稳定性如何落地,不新增原则。
布局视口:例如采用 <meta name="viewport" content="width=device-width, initial-scale=1">,不附加禁用缩放或限制最大倍率的设置。视口配置错误会使断点不按预期触发——在声明支持的移动浏览器中实测布局视口,而不是只在桌面缩放窗口。
承载任务信息的媒体:商品细节图可等比缩放,装饰图可裁切,窄栏宣传图可换构图。提供完整视图或等效说明,验证任务所需细节仍可获得;替代文本是否足够取决于任务,不以一句图片描述代替所有细节。
延迟加载:用资源的 width/height 或与构图匹配的 aspect-ratio 预留空间;各构图比例不同则分别处理。首屏关键媒体不机械套用延迟加载;图片失败时保留必要说明和继续任务的入口。
资源候选可用 srcset/sizes/picture 实现;本规范不要求所有图片都采用多候选资源,也不从窗口宽度推断网速——网络传输与性能预算由项目另定。
4.4 从任务推导布局:记录列表与详情
以下是可复用的设计记录示例,数值是项目假设,尚无产品实测证据。页面负责外边距,工作区容器负责内部结构。
| 决定 | 示例选择与理由 |
|---|---|
| 用户任务 | 从筛选后的列表打开记录,编辑并保存,再返回原位置继续处理 |
| 最小内容需求 | 列表 280px,详情 400px,间距 24px;均按面板外框计算,含内部留白 |
| 测量 | 工作区内容盒的逻辑行内尺寸 C;示例使用横排文字 |
| 结构阈值 | C ≥ 280 + 24 + 400 = 704px 时可并排;C < 704px 时单区展示;长译文或文字放大后重新验证此假设 |
| 空间充足 | 列表保留 280px,详情占剩余空间;详情没有选择时显示选择提示 |
| 空间不足 | 保留当前操作区域,具体按下方接续表选择;详情形态提供“返回列表”,不因缩窄自动打开某项 |
| 不变量 | 当前记录 ID、筛选、选中项、编辑草稿、校验错误、提交状态和阅读锚点 |
| 溢出 | 详情文字自然增长;附件限宽;需比较的表格局部横向滚动,搜索与分页继续重排 |
| 数值消费 | breakpoint.container.recordPanel.inline、component.recordPanel.list.minInlineSize、component.recordPanel.detail.minInlineSize、component.recordPanel.gap;在 Token 字典中按需启用 |
| 能力失败 | 没有容器查询时使用单区流程,仍能打开详情、保存和返回;不依赖脚本测量才显示主要内容 |
跨布局接续表:只在原对象将失去可见性或可操作性时转移焦点;“显示哪一区域”与“焦点落在哪个对象”分别决定。
| 触发与原位置 | 可见区域与焦点接续 | 状态与返回结果 |
|---|---|---|
| 并排 → 单区;焦点在详情输入框 | 保留详情;同一字段保持焦点、选区和输入法组合输入 | 草稿、错误与提交状态不变 |
| 并排 → 单区;焦点在列表项或筛选器 | 保留列表;同一对象保持焦点 | 详情草稿仍保存于工作状态,重新打开时恢复 |
| 并排 → 单区;焦点在工作区外 | 不移动焦点;按最后主动使用的区域显示,无记录时显示列表 | 不自动导航、不触发保存 |
| 单区详情 → 并排;焦点在详情字段 | 展示列表及详情;保留同一字段焦点 | 列表定位原记录,不跳至顶部 |
| 单区详情 → 并排;焦点在将消失的返回按钮 | 将焦点接续到详情标题;标题可程序聚焦,不加入常规 Tab 序列 | 下一次 Tab 到详情的首个可操作元素 |
| 用户主动返回列表 | 焦点回到原记录的打开入口 | 恢复筛选和语义位置;不等同于取消草稿 |
| 返回时原记录已被移除或过滤 | 焦点接续到列表标题,说明记录不在当前结果中 | 保留筛选,给出清除筛选或继续浏览的入口 |
若采用“模态抽屉 ↔ 常驻面板”,另写双向规则:切为常驻时解除背景 inert、滚动锁和焦点约束;切为模态时确保焦点不留在被禁用的背景。不要仅切换外观而保留错误的模态语义。无焦点位于该区域且用户未主动打开时,优先收起为入口,避免尺寸变化强行开启模态界面。
成对验证:一方面,在编辑、中文输入法组合输入、保存未返回和列表加载时双向跨越 704px,核对状态、焦点和请求次数;另一方面,在工作区外输入、未选择记录和宽度连续变化时,确认不会抢焦点、弹确认、自动选记录或反复折叠。通过结果必须同时具备“用户可以继续”和“实现状态未被重置”的证据。
4.5 如何选择适配方案
- 先走一遍真实任务,列出必须同时看到的内容、动作和判断依据。
- 用长文案、错误提示、放大文字压测内容最小空间,再选择自然换行、并排、折叠或分步呈现。
- 用“空间变窄”和“空间变宽”两个方向写接续表,分别覆盖焦点在区域内、外、将被隐藏对象上的情况。
- 最后把重复使用的尺寸提取成 Token;一次性局部行为直接写入组件记录,不新增全站模式或用户设置。
5. 验收清单
以下为项目验收建议,不是新增的屏幕断点。记录结果与环境即可,无需为每项创建独立文档。
| 维度 | 最小检查集合 | 通过条件 |
|---|---|---|
| 宽度 | 320、375、640、768、1024、1440、1920 CSS px;实际断点 b−0.5、b、b+0.5 及中间值 | 内容与操作持续可达,无无关页面溢出 |
| 容器 | 同一组件放入窄面板与宽主区;连续拖动分隔条 | 依据自身空间调整,不被页面状态误导 |
| 高度与方向 | 低高度窗口、横竖屏、软键盘与安全区 | 当前输入、必要上下文和下一步可访问 |
| 缩放 | 文字达到 200%;重排按等效 320 CSS px 检查 | 不裁切必要内容,不抵消用户放大 |
| 内容 | 空、少量、大量、长标题、长译文、错误与加载 | 不依赖理想占位文案成立 |
| 输入 | 键盘、触摸、鼠标;目标平台实际支持的混合输入 | 无悬停独占功能、焦点丢失或热区重叠 |
| 连续性 | 编辑中、选择中、执行中、确认中跨断点 | 不丢草稿,不重复动作,不改变业务后果 |
| 语言与方向 | 目标语言长译文、RTL 混排;声明支持竖排时检查轴映射 | 标签、对象、阅读和焦点顺序一致,无截断关键含义 |
| 能力回退 | 容器查询不可用、配置失败、脚本未就绪、媒体和字体失败 | 基础任务可完成,不重复可聚焦控件,不重置已开始的操作 |
| 偏好 | 减少动画;如有密度模式则检查各组合 | 状态可理解,任务可完成 |
| 特殊区域 | 表格、代码、画布与流式输出 | 滚动范围明确,阅读与比较关系可用 |
| 文字间距 | 适用属性按 WCAG 1.4.12 的四项值覆盖,保留默认字号 | 按钮标签、卡片摘要、菜单、错误提示不丢内容或功能;不适用属性有记录 |
| 焦点连续性 | 焦点置于变化区域内/外及抽屉内部,跨断点切换 | 焦点对象与下一次 Tab 落点可预期;获得焦点的组件未被固定区域完全遮住 |
| Web 视口与媒体 | 声明支持的移动浏览器实测布局视口;主体靠边的内容图片放入窄容器;延迟加载媒体返回 | 断点按预期触发且用户缩放未被禁用;裁切不使必要主体或文字失去访问途径;媒体返回后阅读位置与操作目标不跳 |
响应式验收失败应当落到具体规则、触发条件和复现步骤。截图可以证明某个状态的外观,不能单独证明状态接续和任务完成。
5.1 两侧反例
每条重点规则都有两种失败方式:做不到(未达到要求)与做过头(用增加负担的方式"满足"要求)。两侧均需检查;是否不符合以具体正文义务为准,不以审美偏好单独否决。
| 规则 | 做不到 | 做过头 |
|---|---|---|
| R1-2 折叠入口 | 筛选面板消失且找不到入口 | 把主要操作也全部藏入多级菜单,任务路径反而不可发现 |
| R2-2 内容决定断点 | 按设备名称套断点,长译文先溢出再切换 | 每多一个字符就新增全站断点,没有内容约束依据 |
| R3-1 常规内容支持重排 | 窄宽度下必须左右拖动才能读完一行正文 | 为避免横向滚动把数据表一律拆成卡片,比较任务反而无法完成 |
| R3-2 文字放大与间距 | 用户放大到 200% 后按钮文字被裁切 | 给单行输入框和表格列标题强制换行,控件失去用途 |
| R4-2 焦点连续性 | 抽屉收起后焦点回到文档根,用户不知道自己在哪 | 每次重排都主动把焦点抢到"主要操作"上,打断用户正在做的事 |
| R4-4 固定区域不夺走控制 | 获得焦点的输入框被固定底栏完全盖住 | 一有新内容就弹确认框询问是否滚动,阅读被反复打断 |
| R5-2 命中区域 | 图标看起来很大,实际点击区域不足 | 无限扩大透明热区,遮住相邻操作 |
| R6-3 连续尺寸验收 | 只截了三个断点的图就宣布通过 | 为跑满大量尺寸,每个尺寸都重置页面,漏测编辑中的连续切换 |
规则要求的是承诺成立,不是把提示、确认或开关加满——过度设计同样是失败。
5.2 证据与验收结论
| 证据层 | 回答什么 | 最小记录 |
|---|---|---|
| 文档 | 任意尺寸下的行为是否可解释 | 规则、测量对象、阈值依据、接续表、Token 来源 |
| 实现 | 变化时机制是否生效 | 浏览器与系统环境、视口与容器尺寸、缩放、输入方式、前后焦点对象、草稿和请求次数 |
| 用户任务 | 人能否发现入口并继续完成 | 任务步骤、是否找到返回和纠错路径、是否误解折叠后的状态、失败位置 |
采用记录格式:场景 / 规则 / 环境与内容 / 初始状态 / 操作 / 预期 / 实际 / 通过、失败、未验证或不适用 / 证据与责任人。浏览器设备模拟不能替代软键盘、混合输入和辅助技术的目标环境验证。
验收门槛:适用的必须项失败即不通过,不用平均分抵消草稿丢失、重复提交、主要操作不可达或焦点丢失。未验证项保留为待验收;不适用项注明条件。应当项偏离需说明理由、替代方案与相同任务下的证据。截图、JSON 静态检查、实际任务操作分别记录,不能互相替代。
修改断点、字体、内容最小宽度、固定区域或 DOM 结构后,复查受影响的尺寸、语言、焦点和状态组合;单纯调整一个数值也可能改变布局行为。无需每次穷举所有主题,优先覆盖共同写入同一 Token 或共享空间约束的组合。
6. 术语
| 术语 | 本文含义 |
|---|---|
| CSS px | 布局使用的参考像素;不同于屏幕物理像素,不按 DPR 换算断点 |
| 布局视口 | 页面布局与视口媒体查询的空间依据 |
| 视觉视口 | 当前实际可见的页面区域,可因捏合缩放或软键盘变化 |
| 容器内容盒 | 去除边框与内边距后的容器空间;不得与面板外框尺寸混算 |
| inline / block | 由书写模式决定的行内轴与块轴;横排时通常对应宽与高 |
| 语义阅读位置 | 当前记录、段落或步骤及邻近上下文,不是固定滚动像素 |
| 布局状态 | 根据空间选取的表达方式,不等同于设备类别、信息密度或业务状态 |
实施验收场景
以下场景把已有条款转成可复核的验收输入,不另设通用性能阈值。按产品适用能力选取,补充真实设备、用户、输入序列和证据;不适用记录原因,未执行不得记为通过。
| 条款 | 测试输入与异常 | 预期行为与失败判据 |
|---|---|---|
| R2-1 | 宽视口中把组件放入窄容器,并逐步调整容器。 | 组件按约定容器轴重排,不被页面宽状态强制并排。 |
| R4-1 | 输入中触发断点、文字放大和软键盘。 | 输入、焦点和主要操作保持可达,不重复挂载可聚焦控件。 |
| R6-2 | 覆盖基础值后解析其语义别名,再注入引用环。 | 合法覆盖得到新有效值;引用环被拒绝并保留已验证基础布局。 |
每个场景分别核对配置的有效值、执行记录与用户可理解的结果。保留版本、目标、事件时点、失败范围和恢复结果;外部结果未知不填作成功或失败。
把可复用的尺寸与间距变成有语义、可映射、可验证的设计值,让布局在不同空间中使用同一套设计语言。
配套《响应式设计规范》使用;来源与数值边界见《reference.md》。本文给出 Token 分层、起始字典、上下文映射与工程交付示例,不包含已经发布的 Token 包或组件实现。
1. 使用边界
本字典主要管理 Web 的断点、间距、容器约束、排版与交互尺寸。折叠成抽屉、列表详情如何返回、焦点如何接续等行为,按设计规范执行;数值 Token 与行为规则共同构成响应式设计。
| 对象 | 示例 | 放在哪里 |
|---|---|---|
| 可复用设计值 | 页面边距、卡片最小宽度、对话框最大宽度 | Token |
| 布局与交互规则 | 面板容纳不下时改为抽屉,保留草稿与入口 | 组件规范与实现 |
| 解析上下文 | 当前采用 compact 或 wide 布局取值 | 构建或运行时解析输入 |
| 运行状态 | 实测容器宽度、当前焦点、任务 ID、已选记录 | 应用状态,禁止写入 Token |
响应式字典可以复用项目已有视觉基础 Token;不要为响应式再复制颜色、圆角、阴影等没有空间差异的值。Token 不能替代焦点管理、草稿保存、滚动恢复或任务执行机制。
1.1 采用范围与决策责任
“基础必需”表示采用本文预设时需要可解析的值,可继承默认,不要求用户填写;“条件启用”表示使用相关组件或能力时补齐;不使用的可选字段可以省略。
| 字段组 | 采用条件 | 决策与生效 |
|---|---|---|
| 页面空间、边距、正文与标题 | 采用页面预设时基础必需 | 设计系统维护默认;产品按内容验证后覆盖,测量条件命中时生效 |
| 集合最小宽度 | 使用自动排列集合时启用 | 组件负责人按真实卡片内容决定,在集合局部生效 |
| 控件、热区、图标 | 使用相关交互组件时启用 | 组件负责人核对可见与命中区域;不随窄窗口自动缩小热区 |
| 对话框宽度 | 使用限宽浮层时启用 | 浮层状态消费,全屏状态采用自身尺寸规则 |
| 记录面板阈值及三项空间约束 | 使用并排/单区示例时成组启用 | 组件负责人推导阈值,在指定工作区容器生效 |
| 密度、主题、运动上下文 | 产品实际提供或消费时启用 | 只覆盖声明的字段;系统减少动画偏好不能被局部默认覆盖取消 |
每个覆盖项说明“为什么取该值、谁维护、作用域、何时生效、依赖什么”。字段表不是用户设置页;运行时应用通过校验的完整配置,不逐字段刷新出中间的矛盾布局。
2. 分层与命名
2.1 三层结构
| 层级 | 示例 | 取值方式 |
|---|---|---|
| 基础值 | space.4 = 16px、font.size.400 = 16px | 提供有限的刻度;同一基础值不随布局状态改变 |
| 语义值 | layout.page.padding.inline、type.body.fontSize | 按用途命名;不同上下文引用不同基础值 |
| 组件值,按需建立 | component.dialog.maxWidth | 引用语义值,只有组件需要独立管理的决策才新增 |
示例引用链:component.dialog.maxWidth → layout.overlay.maxWidth → size.overlay.default。没有组件独有需求时,直接消费语义 Token,无需为每个 CSS 属性建立第三层。
2.2 命名约定
- 文档用点路径,如
layout.page.padding.inline;DTCG JSON 用嵌套对象表示层级,不把含点的完整路径作为单个 Token 名称。 - 数值刻度放在基础层;用途名称放在语义层。避免
pagePadding24这类把数值写进用途的名称。 - 使用
inline、block等逻辑方向描述边距;具体物理方向由书写模式决定。 - 同一语义名称跨上下文保持不变,避免分别创建
page.padding.mobile、page.padding.tablet、page.padding.desktop。 - Token 可以表达一个布局参数,但不因为有
layout.grid.columns就要求所有组件遵循同一列数。
以上分层和名称是本项目约定;DTCG 规定交换格式、类型与引用方式,不强制采用这套命名。来源 S04
3. 上下文与解析
3.1 空间状态
| 上下文 | 测量范围 | 默认区间 | 用途 |
|---|---|---|---|
viewport.compact | 页面布局视口宽度 | w < 640px | 页面级紧凑空间取值 |
viewport.regular | 页面布局视口宽度 | 640px ≤ w < 1024px | 页面级常规空间取值 |
viewport.wide | 页面布局视口宽度 | w ≥ 1024px | 页面级宽阔空间取值 |
| 组件局部状态 | 指定容器的内容盒宽度 | 由组件最小可用空间确定 | 组件内部重排,不继承页面状态作为唯一依据 |
默认空间测量 w 为物理宽度,使用视口 width 媒体查询;组件示例的 C 为逻辑行内尺寸,使用容器 inline-size 查询。两者仅在横排书写模式下可直接比较。
这里的 640 / 1024 CSS px 是建议起点,不是外部标准。区间左闭右开,直接比较连续值;不要用 639px 作为上一档上限而遗漏小数宽度。
布局视口适合页面结构分档;软键盘、安全区与可见高度还需要布局实现单独处理,不能靠这两个宽度 Token 解决。
3.2 独立维度
| 维度 | 示例 | 解析范围 |
|---|---|---|
| 视口空间 | compact / regular / wide | 页面边距、区域间距、页面标题 |
| 容器空间 | stacked / inline 等组件局部状态 | 组件内部布局与局部间距 |
| 密度,如产品提供 | comfortable / dense | 控件内边距、行高等获准变化的值 |
| 主题,如产品提供 | light / dark | 既有颜色与效果体系 |
| 运动偏好 | default / reduced | 既有运动体系与布局转场 |
compact 表示可用空间紧凑,dense 表示信息密度较高,二者不能合并为同一维度。无需为了采用本字典而新增密度或主题设置。
本文预设按 §3.3 的确定顺序合并,再解析别名,最后按 §5.1.1 校验。维度优先修改不同字段;同一路径的覆盖要在允许列表中声明,不按设备名称临时猜测优先级。
DTCG Resolver 提供 sets、modifiers 和 contexts 等多上下文组织机制;本文的维度表是项目设计,不是可直接提交给 Resolver 的配置文件。选择上下文的视口测量、容器测量与偏好检测仍由工程实现。来源 S05
3.3 合并、别名与冲突的确定合同
本节是项目消费合同,不声称是通用 DTCG Resolver 配置。
- 加载基础字典与
compact默认语义,再应用产品默认覆盖。 - 根据实测视口选择且仅选择一份页面状态:
compact不额外覆盖;regular或wide使用各自完整覆盖集。主题、密度、运动按此顺序应用,但只能写入各自获准字段。 - 在组件作用域内应用容器状态和组件覆盖;组件不得通过局部配置反向修改全站 Token。页面边距仅由页面空间维度控制,组件局部间距仅由对应组件控制。
- 组按路径递归合并;同一路径的 Token 节点整体替换,不把
$value内的对象成员深合并。覆盖节点必须显式保留匹配的$type,并提供完整$value。未声明的跨维度同路径覆盖报错,禁止默默采用最后一项。 - 对最终作用域内的合并结果解析别名。检测缺失目标、循环、类型不匹配及领域非法值;通过后再输出 CSS 或平台值。不要先解析默认别名再覆盖基础值。
- 任一必需项失败,拒绝整份候选配置;保留上一有效配置。冷启动使用预先交付并经过任务验证的基础单区布局。若该基础布局也未验证,不能宣布验收通过。
手算样本:产品将 space.6 覆盖为 28px,选择 regular 后 layout.page.padding.inline = {space.6},最终页面边距为 28px。若先把别名解析成 24px 再合并,就会得到错误结果。没有覆盖来源的基础默认仍为 24px。
作用域样本:1440px 视口、500px 工作区,页面采用 wide 边距 32px,记录面板仍用单区布局;两者不互相覆盖。页面断点不能直接触发面板并排。
3.4 单位与轴的输出合同
| 输入类别 | 输出方式 | 验证要点 |
|---|---|---|
| 本字典断点、布局尺寸与间距 | 保留 CSS px;DTCG dimension 对象的单位为 px | 不按 DPR、物理屏幕像素或当前根字号换算 |
| 字号基础值 | 示例以设计基准 16px 换算为 rem:16→1、28→1.75、32→2、40→2.5 | 基准仅用于构建换算;不写死浏览器根字号,不在运行时重新除以用户根字号 |
| 已明确以 rem 定义的字号覆盖 | 直接输出 rem,不重复除以 16 | 用户根字号变化后仍可增长 |
| 行高 | 无单位 number 原样输出 | 不能转为固定 px 行高限制文字增长 |
| 逻辑尺寸 | 本文名称中的 maxWidth、minWidth 用于横排预设;CSS 输出到 max-inline-size、min-inline-size | 若支持竖排,需显式记录映射;新组件采用 minInlineSize 等明确命名 |
| 公式与环境变量 | clamp()、min()、env() 留在消费层,由合法 Token 与运行环境组合 | 不把公式字符串、ch、ic、vh 或百分比伪装成 DTCG dimension |
DTCG dimension 支持 px、rem;本文对断点等字段进一步限定为 px 是项目约束。阅读行长可由组件 CSS 使用 ch/ic,也可在明确需要复用时定义具有单位映射的独立字段,但不直接塞进本文 dimension 字典。自定义表达式扩展需标明为工具私有协议。S04、S18
4. 基础值字典
以下均为待产品验证的初始值。如果项目已有兼容的基础刻度,应复用并建立映射,不同时维护两份相同数值。
| Token | DTCG 类型 | 默认值 | 说明 |
|---|---|---|---|
space.0 | dimension | 0px | 无间距 |
space.1 | dimension | 4px | 微间距 |
space.2 | dimension | 8px | 紧邻元素间距 |
space.3 | dimension | 12px | 小组内间距 |
space.4 | dimension | 16px | 基本内边距 |
space.6 | dimension | 24px | 标准区域间距 |
space.8 | dimension | 32px | 大区域间距 |
space.12 | dimension | 48px | 分区间距 |
font.size.400 | dimension | 16px | 示例正文刻度 |
font.size.700 | dimension | 28px | 示例标题刻度 |
font.size.800 | dimension | 32px | 示例标题刻度 |
font.size.900 | dimension | 40px | 示例标题刻度 |
font.lineHeight.body | number | 1.5 | 无单位倍数,需验证所用字体与语言 |
font.lineHeight.heading | number | 1.25 | 无单位倍数,需验证换行标题 |
size.content.default | dimension | 1200px | 默认内容宽度上限 |
size.overlay.default | dimension | 560px | 默认对话框宽度上限 |
size.card.minimum | dimension | 240px | 示例卡片首选最小宽度,窄于可用空间时允许回退 |
size.control.default | dimension | 40px | 标准控件最小高度起点 |
size.target.touch | dimension | 44px | 重要触控操作的项目热区目标 |
size.icon.default | dimension | 20px | 可见图标尺寸,不代表命中区域 |
font.size.400 等编号是本项目的刻度标识,不代表字重。标准控件的 40px 高度与触控热区的 44px 是不同对象;图标控件还需同时检查宽度。文字放大时控件应能增长,不能将这些最小值全部输出成固定高度。font.lineHeight.heading 的 1.25 是作者默认值,与 WCAG 1.4.12 的用户覆盖测试值(行高 1.5 倍等)不是同一件事——后者是覆盖后的验收条件,不构成本表的下限(见规范 R3-2)。
5. 语义值与响应式映射
5.1 页面与排版
表中的引用路径是 Token 别名,括号为默认解析值。
| Token | compact | regular | wide | 关联规则 |
|---|---|---|---|---|
layout.page.padding.inline | space.4(16px) | space.6(24px) | space.8(32px) | R2-3、R6-2 |
layout.grid.gutter | space.4(16px) | space.6(24px) | space.6(24px) | R2-3 |
layout.section.gap | space.6(24px) | space.8(32px) | space.12(48px) | R3-3 |
layout.content.maxWidth | size.content.default(1200px) | 同左 | 同左 | R3-3 |
layout.overlay.maxWidth | size.overlay.default(560px) | 同左 | 同左 | R2-4 |
type.body.fontSize | font.size.400(16px) | 同左 | 同左 | R3-2 |
type.body.lineHeight | font.lineHeight.body(1.5) | 同左 | 同左 | R3-2 |
type.heading.page.fontSize | font.size.700(28px) | font.size.800(32px) | font.size.900(40px) | R3-2 |
type.heading.page.lineHeight | font.lineHeight.heading(1.25) | 同左 | 同左 | R3-2 |
最大宽度始终只是上限,实际宽度仍不得超过可用空间。对话框是否全屏属于组件行为:一旦选择全屏形态,由该形态的样式决定占满可用区域,不能继续用 560px 将其限成窄条。
正文在三档中保持同一字号是有意的设计选择。标题可以分档或采用经过验证的流动字号,但不能让响应式缩小规则抵消用户放大。
5.1.1 领域合法值与解析失败合同
格式正确不等于本专题的语义成立:regular=1100px, wide=900px 都是合法 dimension,却使区间表与两个 min-width 查询的实际顺序不再一致;fontSize=0px、maxWidth=0px 也能通过"非负"检查,却不可作为可用默认值。
领域合法值
| 类别 | 约束 |
|---|---|
| 视口断点 | 有限正 CSS px 值,且 breakpoint.viewport.regular < breakpoint.viewport.wide;倒置或相等为非法 |
| 边距与间距 | 有限非负值,允许 0;本文不允许负间距 |
| 字号、行高、有效内容宽度上限、控件、图标与热区尺寸 | 必须为有限正值;0、负值、NaN 与无穷值为非法 |
| 单位 | 本预设的断点、布局、间距、控件、热区及图标使用 px;字号可用 px 或 rem,按 §3.4 输出;行高无单位。不得以其他单位静默覆盖 |
缺失与非法分开处理
- 缺省上下文:按已声明的默认值解析,属正常路径。
- 未知上下文名称、未解析别名、循环引用、类型不匹配、倒置断点:一律不得静默生效,须输出可预测的错误或落到已定义的回退。
解析失败时的界面行为
- 已运行的界面遇到配置更新失败时,保留上一份通过校验的配置,不丢任务状态、不清空草稿。
- 首次即无有效配置时,采用预先定义并已验证的基础布局,不临时猜值。
默认值、回退值与上一有效配置属于配置管理信息,与配置来源一同记录;实测窗口宽度、焦点对象、任务状态不得写入 Token。
反向样本(用于验收本合同):倒置断点、相等断点、font.size 为 0、未知的 viewport.tablet、缺失 space.6、同一路径的异类型覆盖、循环引用——每种都应得到可预测的错误或明确回退。默认 compact/regular/wide 分别解析为 16/24/32px 页面边距。用表格演算即可验收,不必先建自动执行器。
5.2 断点、组件和交互尺寸
| Token | 类型 | 默认引用或值 | 使用边界 |
|---|---|---|---|
breakpoint.viewport.regular | dimension | 640px | 页面状态下界;编译为查询条件 |
breakpoint.viewport.wide | dimension | 1024px | 页面状态下界;编译为查询条件 |
layout.collection.item.minWidth | dimension | size.card.minimum | 集合自动排布;在极窄容器允许降至可用宽度 |
control.minHeight | dimension | size.control.default | 最小高度,不限制内容增长 |
interaction.target.touch.minSize | dimension | size.target.touch | 重要触控目标的初始目标,不与页面状态绑定 |
icon.default.size | dimension | size.icon.default | 可见图标尺寸 |
component.dialog.maxWidth | dimension | layout.overlay.maxWidth | 可选;需要独立维护对话框时建立 |
组件断点仅在组件确实需要结构切换时新增,例如 breakpoint.container.recordPanel.inline;其值必须从该组件的最小空间约束推导,本文不预设全站通用的组件阈值。
阅读正文宽度、导航栏宽度、工作台三栏约束等按产品内容增加。不会使用的 Token 无需预先建立。
5.2.1 记录面板的条件字段
以下四项仅在采用规范中的记录面板示例时一起启用;示例内容约束尚需产品验证。面板最小尺寸按外框需求计算,父工作区按内容盒测量。
| Token | 类型与默认值 | 合法范围与消费方式 | 规则 |
|---|---|---|---|
component.recordPanel.list.minInlineSize | dimension,280px | 有限正 px;列表并排时的首选最小占用 | R2-2、R3-3 |
component.recordPanel.detail.minInlineSize | dimension,400px | 有限正 px;详情并排时的最小内容需求 | R2-2、R3-2 |
component.recordPanel.gap | dimension,{space.6},24px | 有限非负 px;不受页面状态自动改写 | R2-3 |
breakpoint.container.recordPanel.inline | dimension,704px | 有限正 px,且不小于上述两项最小占用与间距之和;输出逻辑轴查询 | R2-1、R2-2 |
修改三项约束后,构建校验必须重新检查阈值。例如间距由 24 改为 28,704px 已不足,至少需要 708px;不得只有间距生效而保留非法阈值。可以用构建派生计算阈值,但输出为标准 dimension 数值,并保留推导依据,不输出数学表达式别名。
不为“正在编辑”“返回列表”建立尺寸 Token;是否打开详情及焦点接续仍由组件状态管理。
5.3 固定要求与可调值
| 性质 | 内容 | 能否随主题或断点降低要求 |
|---|---|---|
| 标准要求 | WCAG 2.5.8 的 24×24 CSS px 及明确例外 | 不能把覆盖 Token 当成豁免;例外需按标准判定 |
| 项目目标 | 重要触控热区至少 44×44 CSS px 的初始目标 | 有具体原因和验证结果时可调整,仍需满足适用标准 |
| 可调默认值 | 640 / 1024 断点、16 / 24 / 32 边距、1200 内容上限 | 可以按内容与实测调整 |
| 行为要求 | 关键入口可达、草稿不丢失、焦点可接续 | 不能被数值覆盖取消 |
命中区域还涉及间距、形状和相邻目标,不能只比较一个 minSize 数字就宣布通过 WCAG。来源 S08
6. DTCG 交换格式示例
以下是页面横向边距这一小部分 Token的完整默认文件示例。dimension 使用带单位的数值对象,别名引用整个 Token 值。完整字典的其他值按同样方式导出;这些示例并非整套产品 Token。
{
"space": {
"4": { "$type": "dimension", "$value": { "value": 16, "unit": "px" } },
"6": { "$type": "dimension", "$value": { "value": 24, "unit": "px" } },
"8": { "$type": "dimension", "$value": { "value": 32, "unit": "px" } }
},
"layout": {
"page": {
"padding": {
"inline": {
"$type": "dimension",
"$value": "{space.4}",
"$description": "页面横向内边距,默认用于 compact 空间状态"
}
}
}
}
}
regular 上下文的覆盖文件示例:
{
"layout": {
"page": {
"padding": {
"inline": { "$type": "dimension", "$value": "{space.6}" }
}
}
}
}
wide 上下文的覆盖文件示例:
{
"layout": {
"page": {
"padding": {
"inline": { "$type": "dimension", "$value": "{space.8}" }
}
}
}
}
覆盖文件依赖默认文件提供的基础值,不能作为独立、引用齐全的 Token 集使用。构建工具按 §3.3 的加载顺序、Token 节点替换与合并后别名解析执行;DTCG Format 本身不会根据文件名自动推断视口状态。
如采用 DTCG Resolver,应另行输出符合 Resolver Schema 的上下文配置并验证。不要把任意自定义的 modes 对象或字符串型 clamp(...) 标为标准 dimension 值。S04、S05
7. Web 输出示例
下面是与默认字典对应的 CSS 输出示意,不是完整页面或已经实测的组件。字号按设计换算基准 16px 输出为 rem,不固定用户根字号。断点保留 CSS px,分别代表视口测量阈值。
:root {
--space-4: 16px;
--space-6: 24px;
--space-8: 32px;
--space-12: 48px;
--layout-page-padding-inline: var(--space-4);
--layout-grid-gutter: var(--space-4);
--layout-section-gap: var(--space-6);
--layout-content-max-width: 1200px;
--layout-collection-item-min-width: 240px;
--type-body-font-size: 1rem;
--type-body-line-height: 1.5;
--type-heading-page-font-size: 1.75rem;
--type-heading-page-line-height: 1.25;
}
/* 从 breakpoint.viewport.regular 编译得到具体查询条件。 */
@media (min-width: 640px) {
:root {
--layout-page-padding-inline: var(--space-6);
--layout-grid-gutter: var(--space-6);
--layout-section-gap: var(--space-8);
--type-heading-page-font-size: 2rem;
}
}
/* 从 breakpoint.viewport.wide 编译得到具体查询条件。 */
@media (min-width: 1024px) {
:root {
--layout-page-padding-inline: var(--space-8);
--layout-section-gap: var(--space-12);
--type-heading-page-font-size: 2.5rem;
}
}
.page {
box-sizing: border-box;
inline-size: 100%;
padding-inline: var(--layout-page-padding-inline);
font-size: var(--type-body-font-size);
line-height: var(--type-body-line-height);
}
.page__content {
inline-size: 100%;
max-inline-size: var(--layout-content-max-width);
margin-inline: auto;
min-inline-size: 0;
}
.page__title {
font-size: var(--type-heading-page-font-size);
line-height: var(--type-heading-page-line-height);
overflow-wrap: anywhere;
}
.collection {
display: grid;
gap: var(--layout-grid-gutter);
grid-template-columns: repeat(
auto-fit,
minmax(min(100%, var(--layout-collection-item-min-width)), 1fr)
);
}
.collection > * {
min-inline-size: 0;
overflow-wrap: anywhere;
}
min(100%, ...) 允许卡片在窄于首选最小宽度的容器中回退,避免固定最小宽度撑开页面;卡片中的图片、表格等仍需各自处理约束。组件结构切换可使用容器查询,页面断点不能替代该层判断。S03
原生 CSS 的尺寸查询条件不能直接使用 var():不要输出 @media (min-width: var(--breakpoint)) 或同类容器尺寸条件。由构建工具输出具体数值,并保留来源映射。这与容器样式查询查询自定义属性是不同机制。S11
7.1 容器尺寸消费与基础回退
下面与记录面板四项字段一致;704px 是构建输出,不在 CSS 查询中使用 var()。容器自身不切换网格,它的后代 .record-panel 才消费查询。
.record-workspace {
container: record-workspace / inline-size;
min-inline-size: 0;
}
.record-panel {
--record-list-min: 280px;
--record-detail-min: 400px;
--record-gap: 24px;
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: var(--record-gap);
}
.record-panel > * {
min-inline-size: 0;
box-sizing: border-box;
}
/* data-active 来自用户当前工作状态,非 Token。 */
.record-panel[data-active="list"] > .record-detail,
.record-panel[data-active="detail"] > .record-list {
display: none;
}
@container record-workspace (inline-size >= 704px) {
.record-panel {
grid-template-columns: var(--record-list-min) minmax(var(--record-detail-min), 1fr);
}
.record-panel[data-active] > .record-list,
.record-panel[data-active] > .record-detail {
display: block;
}
}
组件只维护一个有效的列表实例与详情实例;若采用多实例实现,隐藏实例不得可聚焦、重复暴露给辅助技术或产生重复 ID。上述 CSS 仅说明排布;跨阈值前由组件按接续表确定 data-active 和焦点去向,返回按钮、输入法状态与模态语义需要行为实现。单靠 display: none 不能证明状态连续。
容器查询不可用时,上述规则保持单区形态;基础的打开详情和返回交互仍由组件提供。不要为了兼容而同时显示两套可提交的表单。S03
7.2 安全区、可见高度与命中区域
/* 环境值是运行时输入,不是持久化 Token。安全区采用物理方向。 */
.page {
padding-left: max(var(--layout-page-padding-inline), env(safe-area-inset-left, 0px));
padding-right: max(var(--layout-page-padding-inline), env(safe-area-inset-right, 0px));
}
.dialog__scroll {
max-block-size: 100vh; /* 基础回退 */
max-block-size: 100dvh;
overflow: auto;
padding-bottom: max(16px, env(safe-area-inset-bottom, 0px));
box-sizing: border-box;
}
.touch-action {
min-inline-size: 44px;
min-block-size: 44px;
padding: 8px;
font: inherit;
white-space: normal;
}
.touch-action__icon {
inline-size: 20px;
block-size: 20px;
}
安全区示例采用“基础留白与安全距离取大者”,不是重复相加;若设计要求在安全区之外额外留白,另行声明 calc() 策略并测试。仅当产品采用边到边布局时评估 viewport-fit=cover,不能假设 inset 总为非零。上述对话框示例是横排、独立可滚动区域;真实浮层还需扣除外边距与其他固定区域,并在目标设备测试键盘打开后的可达性。dvh 不保证避让软键盘,env(safe-area-inset-bottom) 也不等于键盘高度。S16
控制热区示例输出项目 44px 目标和 20px 图标,允许文字增长,不将最小高度设为固定高度。密度模式不能缩小到违反适用要求;热区重叠要以实际命中测试判定。
8. 设计与工程交付
- 设计源:维护基础值、语义引用和已启用的上下文;在组件记录中说明哪一个容器负责局部适配。
- 设计工具映射:将基础值与语义值区分管理;工具支持 modes 时,可映射页面空间状态。设计工具中的 mode 不等于浏览器运行时会自动检测宽度,仍需工程映射。
- 导出:输出 DTCG Token 数据,以及项目所用工具需要的上下文或构建配置。CSS、平台常量等均从同一来源生成。
- 解析:按 §5.1.1 的领域合法值与解析失败合同校验——未知上下文、缺失基础值、循环引用、类型错误、覆盖冲突与倒置断点分别处置;默认上下文必须明确。
- 运行验证:依据《设计规范》第 5 章检查真实界面。JSON 可解析、Token 可解析与界面可用是不同的验证层次。
- 影响检查:记录值的选择理由、关联规则与消费范围;覆盖断点、字号、宽度或固定留白后,复查受影响的任务和语言组合。
建议记录模板:
| Token/上下文 | 解析值 | 原因 | 影响页面或组件 | 验证结果 |
|---|---|---|---|---|
| 示例:组件局部断点 | 产品填写 | 长译文导致布局无法容纳 | 记录详情面板 | 产品填写浏览器、内容、宽度及结果 |
本次仅建立文档与示例;未进行工具链集成、浏览器运行、设计工具导入或设备验证。
9. 配置验收样本
以下是文档级输入/预期合同,不代表已经运行浏览器或设计工具。
| 输入或变化 | 预期 |
|---|---|
| 默认视口宽度 639.5 / 640 / 1023.5 / 1024px | compact / regular / regular / wide;页面边距 16 / 24 / 24 / 32px |
| wide 页面+500px 工作区 | 页面边距 32px,记录面板单区,局部间距 24px |
| 工作区 703.5 / 704 / 704.5px | 单区 / 并排 / 并排;焦点和草稿按接续表维持 |
产品 space.6=28px+regular | 页面边距解析为 28px;启用记录面板时阈值需至少 708px |
| 断点相等、倒置、负间距、零字号、无穷尺寸 | 拒绝配置,输出字段路径与错误原因 |
| 别名目标缺失、循环、dimension 引用 number | 拒绝配置;不得输出残留花括号或 undefined CSS |
未提供上下文与显式未知 viewport.tablet | 前者按默认 compact;后者报错,不能都当作缺省 |
| 密度覆盖页面边距、组件覆盖全站断点 | 不在允许作用域,报错;不依赖文件加载偶然顺序 |
| 用户根字号 20px,正文源值 16px | 构建输出仍为 1rem,计算字号 20px;阈值仍为 640/1024 CSS px |
| 首次无有效配置/运行中收到非法配置 | 前者使用已验证基础布局;后者保留上一有效配置;均不重置任务 |
验收分三步:JSON 结构与类型 → 所有启用上下文的引用、作用域和数值依赖 → 实际界面的任务、缩放、焦点及输入。前两步通过不能替代第三步。
配置交付与校验
示例使用标准 dimension 的 px/rem 表达数值,不能把 dp、pt 或物理米值直接写成同一种交换类型。示例只是一项解析后的页面内边距;视口、容器与密度选择仍由实际布局合同承担,不能据此推定一组断点已经适配。
随附的可执行样例只覆盖 layout.page.padding.inline,其余字段按本字典逐项校验;未覆盖不等于不适用或已通过。样例是所选字段的格式正反例,不是可直接启用全部能力的产品预设。完整产品交付另外包含适用性、依赖、证据、执行映射及进行中操作的生效边界。
字段名、类型或含义变更时更新引用方与验收样例;仅修改说明且不改变合法行为的,保留已有字段名。调用方读取解析后的有效配置,不由 UI 控件、动画或模型文字反推权限、测量或完成事实。参见对应场景。
参考来源
本文件配套《响应式设计规范》与《Design Token》。来源以标准发布方、设计系统官方文档与技术文档为主,区分外部要求、实现机制与本项目的设计判断。
检索发现,响应式布局、无障碍重排与 Token 交换均有可参考资料,但它们解决的问题不同。本专题将这些资料组合为面向 Web 产品的六条原则与 24 条规则;不声称这套分类、断点或 Token 命名是行业统一规范。
1. 来源类型与核验状态
| 类型或状态 | 含义与边界 |
|---|---|
| W3C Recommendation | WCAG 2.2 是正式推荐规范,应在其适用范围与符合性等级内使用。 |
| Understanding 解释文档 | W3C 发布的理解材料,帮助解释成功准则及例外;解释文档本身不是新增的规范性要求。 |
| DTCG 社区组报告 | Format 与 Resolver 为稳定的社区组报告,不是 W3C Recommendation。 |
| 官方设计系统实践 | Material、Carbon 的设计决策可供参考,不能自动成为所有产品必须采用的数值。 |
| 技术文档 | MDN 解释 CSS 能力与限制;有实现机制不等于本项目已经做过运行验证。 |
| 已核验相关内容 | 已读取原始页面中用于判断的内容或章节,不表示审阅全文、运行示例或测试所有浏览器。 |
| 官方检索片段 | 只读到搜索工具返回的官方页面正文片段;不标为已核验完整页面。 |
下列链接定位所采用的原始资料;外部标准的标识及固定来源 URL 用于准确定位证据,不表示本项目的发布编号。核验只覆盖相关内容,不代表兼容性或产品运行测试。
2. 布局与组件适配
S01 Material Design 3 — Canonical layout examples
- 来源:官方页面。
- 状态:官方检索片段。片段包含信息流、列表—详情与辅助面板的分类及跨断点适配说明;直接打开页面仅返回 JavaScript 提示,未核验交互示例全文。
- 支持什么:以常见任务结构组织布局示例,作为 R2-3 和组件行为矩阵的参考。
- 不支持什么:不能据此宣称所有产品在某个宽度必须采用两栏、侧栏或底部导航。本项目的 640 / 1024 断点不来自该页面。
S02 IBM Carbon — 2x Grid
- 来源:Overview。
- 状态:已核验基础单元、固定/流动/混合栅格、断点与尺寸刻度相关内容。
- 支持什么:用有限的尺寸刻度建立秩序,并区分增加可见项目数量与增加每个项目的内容空间;支持 R2-2、R2-3、R3-3 与基础 Token 的组织思路。
- 数值边界:Carbon 页面列出的断点为 320、672、1056、1312、1584px;这些是 Carbon 自身的配置。本项目不将其与其他设计系统的断点拼接成所谓通用标准,也未照搬其列数、边距与面板行为。
S03 MDN — CSS container queries
- 来源:官方文档。
- 状态:已核验容器尺寸查询、容器建立与组件适配示例。
- 支持什么:尺寸容器查询依据指定容器调整后代元素样式;支持 R2-1 的页面与组件分别适配,以及 Token 文档中的局部状态。
- 不支持什么:没有定义本项目的组件断点;不能据此认定所有容器查询子功能在全部目标浏览器上可用。具体采用的尺寸查询、样式查询等需要分别验证。
3. Design Token 格式与上下文
S04 Design Tokens Format Module
- 来源:原始报告。
- 成熟度:DTCG Final Community Group Report;不是 W3C Standard。
- 状态:已核验文档状态、分组、类型与 dimension、别名示例相关内容。
- 支持什么:使用
$type、$value和引用表达设计值;dimension用带数值和单位的对象表示。支持 R6-2 及 Token 文档的 JSON 示例。 - 不支持什么:没有强制“基础—语义—组件”三层命名,也没有规定本项目的断点、44px 目标或页面最大宽度。符合格式不代表界面符合无障碍要求。
S05 Design Tokens Resolver Module
- 来源:原始报告。
- 成熟度:DTCG Final Community Group Report;不是 W3C Recommendation。
- 状态:已核验多上下文、sets、modifiers、contexts 与解析组织相关内容。
- 支持什么:同一组设计值可以在不同情境下解析,减少重复维护。支持空间、密度与主题等维度分别组织的工程方向。
- 不支持什么:Resolver 不替应用测量当前窗口,也不保证设计工具自动切换模式。本项目上下文表和覆盖文件示例不等于一份完整、经过 Schema 校验的 Resolver 配置。
4. 可读性、输入与无障碍
这些条目的规范性依据均为 WCAG 2.2 正式正文。下列 Understanding 链接用于解释要求和适用边界。已打开正式正文;本次判断只覆盖下列相关准则,未做全项符合性审查。
S06 WCAG 1.4.10 — Reflow,AA
- 来源:Understanding Reflow。
- 状态:已核验成功准则、二维布局例外、表格、缩放和固定区域相关说明。
- 支持什么:纵向内容在等效 320 CSS px 宽度、横向内容在等效 256 CSS px 高度下的重排要求;确需二维布局的内容有例外。支持 R3-1、R3-4 与固定区域检查。
- 边界:表格的例外不自动扩展到页面标题、搜索与分页;单元格按内容另行检查。320 CSS px 是重排测试条件,不要求产品为“320px 设备”新增一套视觉模式。
S07 WCAG 1.4.4 — Resize Text,AA
- 来源:Understanding Resize Text。
- 状态:已核验成功准则及响应式字号与放大的解释。
- 支持什么:除指定例外外,文字能够放大至 200% 而不损失内容或功能,支持 R3-2。
- 边界:不能以字号使用
rem或存在流动字号公式直接判定通过;还需检查控件与实际放大结果。200% 文字放大与等效 320 CSS px 重排是不同检查,不能互相代替。
S08 WCAG 2.5.8 — Target Size (Minimum),AA
- 来源:Understanding Target Size (Minimum)。
- 状态:已核验尺寸、间距及例外说明。
- 支持什么:指针目标至少 24×24 CSS px,或满足间距、等效目标、行内内容、用户代理控制、本质必要等明确例外;支持 R5-2。
- 边界:本项目建议的重要触控目标 44×44 CSS px 是设计起点,不能标成 AA 的统一下限。圆形或不规则形状、热区间距和重叠需要具体检查,不能只检查一个宽度变量。
S09 WCAG 1.3.4 — Orientation,AA
- 来源:Understanding Orientation。
- 状态:已核验成功准则与方向限制的例外。
- 支持什么:除特定方向本质必要外,不限制只能一种显示方向,支持 R2-4。
- 边界:横竖屏可用不等于软键盘、可见高度和安全区已经正确处理;这些是本专题另外提出的验证场景。
S10 WCAG 2.4.3 — Focus Order,A
- 来源:Understanding Focus Order。
- 状态:已核验焦点顺序与含义、操作之间的关系。
- 支持什么:顺序导航需要保持含义和可操作性,支持 R4-2。
- 边界:并非要求视觉位置与 DOM 顺序在所有布局中逐像素一致;跨布局如何保持对象焦点、语义阅读位置,是本规范进一步提出的产品行为。
5. 工程实现与用户偏好
S11 MDN — Using CSS custom properties
- 来源:官方文档。
- 状态:已核验官方检索返回的
var()使用范围说明,未审阅全文。 - 支持什么:
var()不能直接替代媒体查询或容器尺寸查询的阈值,支持断点在构建阶段输出具体数值的建议。 - 边界:不能将这一限制误写为“容器查询不能涉及自定义属性”;容器样式查询是不同机制。本项目未指定唯一构建工具或插件。
S12 MDN — hover media feature
- 来源:官方文档。
- 状态:已核验主要输入机制的悬停能力说明。
- 支持什么:输入能力可以作为查询条件,支持 R5-1 将悬停与窗口宽度分开处理。
- 边界:主要输入机制的查询不代表设备上所有输入,也不能证明用户当下只用某一种输入。关键操作仍需有实际可达路径。
S13 MDN — prefers-reduced-motion
- 来源:官方文档。
- 状态:已核验减少动画偏好的检测与应用说明。
- 支持什么:系统偏好可以参与运动样式选择,支持 R5-4 与独立的运动上下文。
- 边界:检测到偏好不代表已完成替代设计。关闭动画后的状态提示与业务连续性由产品实现;MDN 并未直接规定本文的全部行为要求。
6. 补充的技术与验收依据
以下已打开并核对相关正文;未运行页面示例。S03、S04、S05、S06、S07 也已重新核对与本次补充有关的机制和边界;其他条目保留原有阅读范围,不扩称全部重新审阅。
S14 WCAG 1.4.12 — Text Spacing,AA
- 来源:W3C Understanding Text Spacing。
- 支持什么:用户覆盖行高、段落、字距及词距后内容与功能不丢失;语言和书写系统有适用属性边界。用于 R3-2 与文字间距验收。
- 不支持什么:不要求默认标题行高达到 1.5,也不把四项测试值转成所有 Token 的最小值。
S15 WCAG 2.4.11 — Focus Not Obscured (Minimum),AA
- 来源:W3C Understanding Focus Not Obscured。
- 支持什么:键盘焦点组件不被作者创建内容完全遮挡;用户可移动或主动打开内容的情形按准则注释处理。用于 R4-4。
- 不支持什么:AA 最低要求不等于所有焦点对象始终完整可见;也不能据此证明系统软键盘避让已通过。
S16 视觉视口、视口单位与环境变量
- 来源:MDN VisualViewport、CSS length、env()。
- 支持什么:布局视口与视觉视口可不同;软键盘可能缩小后者而不改变前者。小、大、动态视口单位描述不同的视口尺寸;
env()提供环境值及回退。用于 R2-4 和安全区消费示例。 - 项目判断:不把
dvh或安全区当键盘高度保证;以目标浏览器的实际输入、滚动和提交任务验收。取大者或相加的留白策略由设计意图决定,不是文档规定的唯一公式。 - 边界:没有验证所有浏览器、嵌入式 WebView 和设备的键盘行为;API 可用不等于组件已经正确处理缩放、偏移和滚动。
S17 HTML — 响应式图片
- 来源:WHATWG HTML Images。
- 支持什么:用
srcset/sizes表达资源候选和显示尺寸,用picture按条件选择构图;图片尺寸信息支持预留布局空间。用于 R4-3 与媒体案例。 - 边界:所读介绍部分是解释材料,不规定本项目的裁切比例或性能预算。不同图片的完整视图、替代说明是否足够,仍需以具体任务判断;不从窗口宽度推断网络质量。
S18 CSS 逻辑轴与文字度量
- 来源:MDN Logical properties: Basic concepts、CSS length。
- 支持什么:inline/block 随书写模式确定;
ch与ic基于不同字形度量,不能作为固定字符数。用于 R2-1、R3-3 与单位映射合同。 - 项目判断:页面默认查询物理宽度,组件示例查询逻辑行内尺寸;支持竖排时显式验证轴映射,而非把所有宽度名自动解释为同一维度。
7. 本项目的设计判断
以下是从任务需求和资料中推导的方案,不属于来源原文中的统一规定。
| 项目决策 | 推导理由 | 验证与调整方式 |
|---|---|---|
| 六条原则与 24 条规则 | 分开管理任务可达、空间判断、可读性、连续性、输入与交付责任 | 用真实场景检验遗漏与归属争议 |
| 640 / 1024 CSS px 默认断点 | 提供少量明确空间状态 | 按内容最小可用宽度与长文本重新校准 |
| 16 / 24 / 32px 页面边距 | 为窄、常规、宽阔空间建立简单节奏 | 用目标页面、语言和内容密度验证 |
| 1200px 内容上限、560px 浮层上限 | 为普通内容页与对话框提供初始约束 | 阅读、工作台、画布分别调整,不强制统一 |
| 正文三档保持 16px | 维持基础可读性,主要通过结构和间距适配 | 验证实际字体、用户放大与多语言 |
| 重要触控目标 44px | 采用比 AA 尺寸基线更宽裕的项目起点 | 检查热区形状、相邻目标与真实操作 |
| Token 三层与上下文分离 | 减少同义值重复并限制覆盖范围 | 检查引用、覆盖组合和变更影响 |
| 704px 记录面板阈值 | 280px 列表+24px 间距+400px 详情的示例推导 | 实际内容、长译文、放大文字与双向切换后校准,不是标准断点 |
| 合并后解析、作用域允许列表和整体拒绝非法配置 | 保证同一输入产生可解释输出,避免半套配置生效 | 验证覆盖组合、循环引用、类型与组件空间依赖;属于本项目消费合同 |
| Agent 入口与状态持续可达 | 布局变化不应破坏执行控制和判断所需信息 | 执行、停止、确认、结果查看时跨断点 |
8. 未采用为事实依据的检索线索
- Material 的窗口尺寸分档页面:本次直接访问失败,未将第三方转载的分档数值作为本项目来源。
- Adobe Spectrum Design tokens 页面:本次直接打开未得到可用于核验的正文,因此未用于证明具体 Token 分层或参数。先前检索到的 Headers、Spacing 片段也未承担本专题的规范性要求。
- 第三方断点汇总、论坛讨论和教程:可用于后续检索,但本次具体技术结论回到官方文档,不引用这些材料证明行业共识。
9. 工作范围与验证边界
| 已完成 | 尚未完成 |
|---|---|
| 检索官方布局、Token 与无障碍资料,按上述范围核验 | 系统性文献综述及所有设计系统的比较 |
| 整理原则、规则、默认值、引用示例和验收方法 | 具体业务的用户任务研究与数值校准 |
| 提供 Web CSS 与 DTCG JSON 文档示例 | CSS 浏览器运行、设计工具导入与完整 Resolver Schema 验证 |
| 区分外部要求与项目默认值 | 真实设备、辅助技术和完整 WCAG 符合性测试 |
实施时优先补齐目标产品的内容宽度、容器约束、浏览器支持和输入场景;实际实施记录验证证据,不将文档示例当作已经通过产品验证的默认答案。