Skip to content
通用组件

表单字段Field

标签 + 控件 + 说明 / 校验文案。字段里的控件自动关联标签、说明与出错状态。

Vue
实验import { AkField } from "@mooncellwiki/prts-design-vue"Storybook ↗源码 ↗

一个表单项 = 标签 + 控件 + 说明 / 校验文案(同 Naive UI 的 n-form-item)。表单组件(.ak-input .ak-select .ak-check …)与 Widget / Gadget 直接吐出的裸控件是同一套规则:36px 定高、2px 角、同一枚 ▾、同一张勾选框 / 圆形单选——裸控件的样子见 MediaWiki 内容样式 · 表单控件。

各控件:输入框 · 数字输入 · 下拉选择 · 复选框 · 单选 · 开关 · 滑杆 · 搜索框 · 键帽。

标签 · 必填 · 说明 ​

label 渲染成 <label for>,指向字段里的第一个控件——控件的 id 由字段生成,不用自己写。required 在标签后出红色 *(读屏不念,控件自己带 required)。feedback 是标签下面那行小字,经 aria-describedby 关联到控件。

校验状态 ​

validation-status="error":字段加 .is-invalid、控件红边 + aria-invalid、文案变红字;success:输入框绿边。原生的 :user-invalid(required 空着、maxlength 超了……)也是红边,只在用户改过之后才判,不会一进页面满屏红。

各种控件 ​

一组复选框 / 单选没有单个可以 for 的控件:字段的标签改由组 aria-labelledby 指向(role="group" / radiogroup),标签不写 for。步进器、开关这类定宽控件在字段里不拉满一行。

可访问性 ​

关系输出
标签 → 控件<label for="…-control"> + 控件 id(AkInput / AkSelect / AkInputNumber / AkSwitch / AkSlider / AkSearch / 单个 AkCheckbox)
标签 → 组组 aria-labelledby="…-label"(AkCheckboxGroup / AkRadioGroup),标签不写 for
说明 / 错误 → 控件aria-describedby="…-help"
出错控件 aria-invalid="true";文字说清楚怎么改(「应为 1-7、CE-6 这样」),不要只写「格式错误」
必填文本类控件 required、单选组 aria-required;标签里的 * aria-hidden

字段里自己写的原生控件,用默认插槽的参数拿 id:<AkField label="…" v-slot="{ id }"><input :id="id"></AkField>。

Vue API ​

属性类型默认说明
labelstring—标签文字:渲染成 <label for>,指向字段里的第一个控件(= 控件的可访问名);复选组 / 单选组改由组 aria-labelledby 指向它
requiredbooleanfalse必填:标签后出红色 *(读屏不念,控件自己带 required)
feedbackstring—说明或校验文案(.ak-help),经 aria-describedby 关联到控件;validation-status="error" 时是红字
validationStatus"success""error"—校验状态(同 Naive 的 validation-status):error = 红边 + 红字文案 + aria-invalid · success = 绿边
插槽说明
default控件;自己写的原生控件用插槽参数里的 id 对上标签
label标签内容(代替 label,要放链接 / 图标时用)
feedback说明 / 校验文案(代替 feedback)

CSS 实现 ​

模板 / Lua 输出:

html
<div class="ak-field is-invalid">
  <label class="ak-label" for="stage">关卡编号 <span class="req">*</span></label>
  <input class="ak-input" id="stage" aria-describedby="stage-help" aria-invalid="true">
  <div class="ak-help ak-help--error" id="stage-help">格式不正确</div>
</div>

.ak-check-group(一组勾选 / 单选的横排容器)、各尺寸档、禁用态等也在同一个文件里。

块元素 __修饰 --

文本 CC BY-NC-SA 4.0 · 游戏素材版权归鹰角网络所有