fieldset 和 legend 怎样给表单控件分组?
一组相关单选按钮若只靠视觉边框,读屏用户很难知道它们共同回答什么问题。fieldset 建立分组,首个 legend 提供组标题;组标题与各选项的 label 各有分工;占位文本不能代替说明,嵌套分组也要保持清楚。
HTML · Web 可访问性面试题第 1 页,显示第 1–13 题,共找到 13 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
一组相关单选按钮若只靠视觉边框,读屏用户很难知道它们共同回答什么问题。fieldset 建立分组,首个 legend 提供组标题;组标题与各选项的 label 各有分工;占位文本不能代替说明,嵌套分组也要保持清楚。
input type=image 是以图片呈现的提交按钮,点击时除触发表单提交,还会发送相对图片的点击坐标。无 name 时提交 x、y,具名时变成 name.x、name.y;alt 要说明操作,图片失败时也应可用。
缩写首次出现时应让读者明白它代表什么。<abbr> 的 title 能提供展开词,却不保证每位用户都方便获得;正文首次写全称、后续再用缩写更易读。 触屏用户尤其难以获得悬浮提示,重要术语的全称应直接出现在可见正文里。
accesskey 看似能提供键盘捷径,却可能和浏览器、系统、读屏软件的快捷键冲突,也受键盘布局与组合键差异影响。组合键随平台变化,还可能撞上浏览器或读屏软件快捷键;即使用它,也需要可发现的说明和可替代操作。
ARIA role 能告诉辅助技术元素扮演的角色,却不会自动补齐原生按钮的焦点、回车与空格交互。再比较 button 和 div role=button,说明原生语义优先的原因,以及何时才需要自己实现复杂控件。
标题元素表达内容层级,不是用来挑字体大小的标签。页面主标题通常用 h1,其下章节用 h2,再往下用 h3;层级应跟随内容从属关系。辅助技术可按标题快速浏览文档,清晰的标题也帮助搜索系统理解结构。
alt 是图片内容或功能的文本替代,在图片无法显示及辅助技术读取时尤其重要。title 常表现为鼠标悬停提示,但它不稳定地出现在触摸、键盘和读屏体验中,不能取代 alt。需要额外说明时可用邻近可见文字或图题,不必把同一句话同时塞进两个属性。
<label for="id"> 的 for 值对应某个可标注表单控件的唯一 id。关联后,点标签文字也能聚焦输入框或切换复选框,并给控件提供可理解的名称。也可以把控件直接放进 <label> 做隐式关联。
<header> 是页面或章节的引导内容,<footer> 是对应页面或章节的页脚信息;它们不只按屏幕顶部、底部的位置命名。<main> 标记文档主要内容,通常一个页面只应有一个当前可见的主内容区域,并且不应放进 header、footer、nav 等结构中。
<meta http-equiv="refresh"> 能在指定秒数后刷新或跳转,但自动动作会打断阅读、输入和读屏操作;倒计时不清楚时,用户更难掌控页面。需要真正的永久或临时地址迁移,优先用 HTTP 重定向。
一页有多张数据表时,caption 能给每张表提供可见标题,也能成为辅助技术理解表格的名称;aria-label 只提供不可见名称。页面上已有对应标题时,还可用 aria-labelledby 关联,避免视觉文字与读屏名称不一致。
教学视频的翻译字幕适合 subtitles,面向听不到声音的用户则需要 captions,把对白、重要音效和说话人线索都写进去。track 还支持描述、章节和元数据;语言标记、默认轨道与 WebVTT 时间轴都要在实际播放器中检查。
页脚导航的几个入口是并列项目,用 ul 包住 li 可以明确集合和项目边界;开户步骤有先后顺序则更适合 ol。圆点和横排属于 CSS 样式,移除圆点不必改掉列表结构;普通连续论述也不应只为排版硬拆成列表。