Design Vocabulary设计词汇 · 样本集 01

VOCABULARY / 词条

填空式输入

Fill in the Blanks

加入比较 +

把输入控件嵌进一句话里,让填完之后整句读起来是通顺的陈述:字段的含义由它在句中的位置说明,而不是由一个单独的标签说明。

示意图 · 编辑插画,尚无可操作示例
一张名为 FIELDNOTES 的虚构表单示意:一行文字中交替出现灰色词条与三个带下划线的输入空缺,其中两个已填入深色短文本,第三个为空并带光标。
一张名为 FIELDNOTES 的虚构表单示意:一行文字中交替出现灰色词条与三个带下划线的输入空缺,其中两个已填入深色短文本,第三个为空并带光标。

识别特征

  • 输入控件与文字交替排列,共同构成一句可读的话
  • 字段没有独立标签,含义由句子的上下文承担
  • 填写完成后整句就是对所填内容的一句陈述

概念边界

判定标准是"句子本身就是标签",而不是"表单写得口语化"。它只适用于字段少、且彼此确实构成一句话的情形;字段一多,句子就会变成必须通读的长段,反而比逐项标签更慢。它也不是自然语言输入:用户填的仍是受控的字段,只是被排成一句话。这一模式天然依赖语序,翻译时句子结构会变,字段顺序也得跟着变,因此多语言产品要为每种语言各自排布,而不是把控件位置写死。

什么时候考虑它

  • 单独给字段写标签时,标签怎么写都说不清它到底要什么
  • 标签会变得又长又绕,放进句子反而一眼就懂
  • 字段数量少且必填,句中出现空缺会让人自然想补上

什么时候慎用

  • 字段很多,用户必须读完整段句子才能动手
  • 大部分字段可以不填,句子中留下的空缺反而令人不安
  • 界面需要支持多语言但字段位置被写死在一种语序里

取舍

句子承担了标签与说明的全部工作,理解成本几乎为零;代价是它牺牲了表单的可扫读性:字段不再对齐成列,用户无法快速判断还剩几项没填。

条件规则 · 编辑建议

当输入控件被嵌入句子中必须仍为每个控件提供可被读屏识别的名称,不要只依赖视觉上的上下文。
当界面需要翻译成其他语言必须把整句作为可调整语序的模板交给翻译,而不是把控件位置固定在原语言的语序上。

相关词条

行内编辑 ↗相关但不同 · 用户在正文所在的位置直接修改取值

两者都把控件放进内容之中,但就地编辑修改的是已有内容,填空式输入是从一开始就用句子收集内容。

行内校验反馈 ↗可以配合 · 某个空缺填入了不合法的取值

句中没有独立标签可供挂载错误说明,因此提示必须贴近该空缺本身,并说清期望的格式。

认知负荷 ↗可以配合 · 句中空缺的数量增加

每增加一个空缺,用户就要多维持一段未完成的句子在工作记忆里,超过少数几个就会得不偿失。

来源与支持范围

UI Patterns · Fill in the Blanks design pattern ↗

该模式记录别称为"自然语言表单",并建议在以下情形使用:为输入框写的标签说不清它到底要什么;标签变得冗长复杂、反而让用户难以理解;字段的含义可以通过把它放进一句话来表达;以及字段为必填或强烈期望被填写——句中留下空缺会让用户不适。它同时提醒:字段数量多时把它们都放进句子会让用户疲惫,因为句式结构迫使用户读完每一句,并且不要在大量字段可不填时使用。本词条的适用与不适用条件据此转述。

检索日期:2026-09-16 · 快照待确认

定义参考以上来源;数字界面示例、选择建议、条件关系及配方由本样例编辑,尚未经用户研究验证。

类型扩展与实现说明

本词条尚无可操作示例;插画为编辑示意,其中的句子与取值均为虚构。应用到产品前仍须确认每个嵌入控件都有可访问名称,并在放大字号与换行后检查句子的阅读顺序。

{
  "states": [
    "empty",
    "partial",
    "complete",
    "invalid"
  ],
  "a11y": [
    "每个嵌入控件有可访问名称,而不是仅靠周围文字暗示",
    "句子在放大字号或换行后仍保持可读的顺序"
  ],
  "motion": "无动效;填入后的句子直接更新"
}
完整 Agent 条目 JSON
{
  "id": "fill-in-the-blanks",
  "type": "interaction",
  "name": {
    "zh": "填空式输入",
    "en": "Fill in the Blanks"
  },
  "aliases": [
    "Natural Language Form",
    "Madlib Form",
    "自然语言表单",
    "句子式表单"
  ],
  "granularity": "component",
  "intents": [
    "prevent-error",
    "reduce-complexity"
  ],
  "tags": [
    "表单",
    "输入",
    "句子",
    "上下文",
    "标签"
  ],
  "definition": "把输入控件嵌进一句话里,让填完之后整句读起来是通顺的陈述:字段的含义由它在句中的位置说明,而不是由一个单独的标签说明。",
  "boundary": "判定标准是\"句子本身就是标签\",而不是\"表单写得口语化\"。它只适用于字段少、且彼此确实构成一句话的情形;字段一多,句子就会变成必须通读的长段,反而比逐项标签更慢。它也不是自然语言输入:用户填的仍是受控的字段,只是被排成一句话。这一模式天然依赖语序,翻译时句子结构会变,字段顺序也得跟着变,因此多语言产品要为每种语言各自排布,而不是把控件位置写死。",
  "signature": [
    "输入控件与文字交替排列,共同构成一句可读的话",
    "字段没有独立标签,含义由句子的上下文承担",
    "填写完成后整句就是对所填内容的一句陈述"
  ],
  "when": [
    "单独给字段写标签时,标签怎么写都说不清它到底要什么",
    "标签会变得又长又绕,放进句子反而一眼就懂",
    "字段数量少且必填,句中出现空缺会让人自然想补上"
  ],
  "when_not": [
    "字段很多,用户必须读完整段句子才能动手",
    "大部分字段可以不填,句子中留下的空缺反而令人不安",
    "界面需要支持多语言但字段位置被写死在一种语序里"
  ],
  "tradeoff": "句子承担了标签与说明的全部工作,理解成本几乎为零;代价是它牺牲了表单的可扫读性:字段不再对齐成列,用户无法快速判断还剩几项没填。",
  "comparison": {
    "focus": "用句子的上下文说明每个字段要填什么",
    "mechanism": "输入控件嵌入连续文字之中",
    "cost": "失去对齐与可扫读性,且依赖语序"
  },
  "sources": [
    {
      "id": "fitb-ui-patterns",
      "title": "UI Patterns · Fill in the Blanks design pattern",
      "url": "https://ui-patterns.com/patterns/FillInTheBlanks",
      "claim": "该模式记录别称为\"自然语言表单\",并建议在以下情形使用:为输入框写的标签说不清它到底要什么;标签变得冗长复杂、反而让用户难以理解;字段的含义可以通过把它放进一句话来表达;以及字段为必填或强烈期望被填写——句中留下空缺会让用户不适。它同时提醒:字段数量多时把它们都放进句子会让用户疲惫,因为句式结构迫使用户读完每一句,并且不要在大量字段可不填时使用。本词条的适用与不适用条件据此转述。",
      "checkedAt": "2026-09-16",
      "archive": {
        "lookupUrl": "https://web.archive.org/web/20260916*/https://ui-patterns.com/patterns/FillInTheBlanks",
        "status": "pending",
        "checkedAt": "2026-09-22T11:55:04.410Z",
        "error": "status-request-failed",
        "jobId": "spn2-f131fc62c7ca8c7cf7934fb55bb00d0e98264a0a"
      }
    }
  ],
  "relations": [
    {
      "target": "inline-edit",
      "kind": "related",
      "condition": "用户在正文所在的位置直接修改取值",
      "reason": "两者都把控件放进内容之中,但就地编辑修改的是已有内容,填空式输入是从一开始就用句子收集内容。",
      "basis": "editorial"
    },
    {
      "target": "inline-validation",
      "kind": "composes_with",
      "condition": "某个空缺填入了不合法的取值",
      "reason": "句中没有独立标签可供挂载错误说明,因此提示必须贴近该空缺本身,并说清期望的格式。",
      "basis": "editorial"
    },
    {
      "target": "cognitive-load",
      "kind": "composes_with",
      "condition": "句中空缺的数量增加",
      "reason": "每增加一个空缺,用户就要多维持一段未完成的句子在工作记忆里,超过少数几个就会得不偿失。",
      "basis": "editorial"
    }
  ],
  "rules": [
    {
      "when": "输入控件被嵌入句子中",
      "instruction": "仍为每个控件提供可被读屏识别的名称,不要只依赖视觉上的上下文。",
      "strength": "must",
      "basis": "editorial"
    },
    {
      "when": "界面需要翻译成其他语言",
      "instruction": "把整句作为可调整语序的模板交给翻译,而不是把控件位置固定在原语言的语序上。",
      "strength": "must",
      "basis": "editorial"
    }
  ],
  "behavior": {
    "states": [
      "empty",
      "partial",
      "complete",
      "invalid"
    ],
    "a11y": [
      "每个嵌入控件有可访问名称,而不是仅靠周围文字暗示",
      "句子在放大字号或换行后仍保持可读的顺序"
    ],
    "motion": "无动效;填入后的句子直接更新"
  },
  "demo": null,
  "version": "0.1.0",
  "editorialStatus": "drafted",
  "requirements": [],
  "demoCapabilities": [],
  "implementationNote": "本词条尚无可操作示例;插画为编辑示意,其中的句子与取值均为虚构。应用到产品前仍须确认每个嵌入控件都有可访问名称,并在放大字号与换行后检查句子的阅读顺序。",
  "image": {
    "src": "/images/fill-in-the-blanks.webp",
    "alt": "一张名为 FIELDNOTES 的虚构表单示意:一行文字中交替出现灰色词条与三个带下划线的输入空缺,其中两个已填入深色短文本,第三个为空并带光标。"
  },
  "searchTerms": [
    "form",
    "input",
    "sentence",
    "context",
    "label"
  ]
}