HTML 的 <legend> 元素

1. 什么是 <legend> 元素

<legend> 是 HTML 中用于为 <fieldset> 表单分组提供标题说明的元素。它必须作为 <fieldset> 的第一个子元素出现,用于描述该分组内表单控件的共同用途。

html 复制代码
<form>
  <fieldset>
    <legend>个人信息</legend>
    <label>姓名:<input type="text" name="name"></label>
    <label>年龄:<input type="number" name="age"></label>
  </fieldset>
</form>

浏览器默认会将 <legend> 的内容显示在 <fieldset> 边框的左上角,视觉上起到分组标题的作用。

2. 基本语法与规则

<legend> 是一个双标签元素,基本语法如下:

html 复制代码
<fieldset>
  <legend>分组标题文本</legend>
  <!-- 表单控件 -->
</fieldset>

使用 <legend> 时需要注意以下几点:

3. 为什么使用 <legend>

使用 <legend> 主要有以下几个好处:

  • 提升可访问性 :屏幕阅读器会将 <legend> 的内容与分组内的表单控件关联起来,帮助视障用户理解每个输入框的用途。
  • 语义化清晰:将相关的表单控件组织在一起,代码结构更易读、易维护。
  • 改善用户体验:用户能快速理解一组表单字段的共同主题,填写时更有方向感。
html 复制代码
<form>
  <fieldset>
    <legend>配送地址</legend>
    <label>收件人:<input type="text" name="receiver"></label>
    <label>电话:<input type="tel" name="phone"></label>
    <label>地址:<input type="text" name="address"></label>
  </fieldset>
</form>

4. 与 <fieldset> 的配合使用

<legend> 必须与 <fieldset> 配合使用才有意义。<fieldset> 负责将相关控件分组,<legend> 则为该分组提供说明文字。

html 复制代码
<form>
  <fieldset>
    <legend>账号信息</legend>
    <label>用户名:<input type="text" name="username"></label>
    <label>密码:<input type="password" name="password"></label>
  </fieldset>

  <fieldset>
    <legend>个人资料</legend>
    <label>昵称:<input type="text" name="nickname"></label>
    <label>性别:
      <select name="gender">
        <option value="male">男</option>
        <option value="female">女</option>
      </select>
    </label>
  </fieldset>
</form>

5. 样式化 <legend>

可以通过 CSS 对 <legend> 进行样式定制,使其更符合页面整体设计:

css 复制代码
legend {
  font-weight: bold;
  color: #333;
  padding: 0 8px;
  background: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 4px;
}
html 复制代码
<form>
  <fieldset>
    <legend>联系方式</legend>
    <label>邮箱:<input type="email" name="email"></label>
    <label>手机:<input type="tel" name="phone"></label>
  </fieldset>
</form>

6. 可访问性最佳实践

为了让 <legend> 发挥最大的可访问性价值,建议遵循以下实践:

  • 标题文本应简洁明确,直接描述分组内控件的共同用途。
  • 不要使用空的 <legend>,否则屏幕阅读器无法提供分组说明。
  • 避免在 <legend> 中放置复杂的交互元素,保持其作为纯文本标题的语义。
  • 当表单较长时,合理使用多个 <fieldset> + <legend> 组合,帮助用户理清填写步骤。
html 复制代码
<form>
  <fieldset>
    <legend>第一步:基本信息</legend>
    <label>姓名:<input type="text" name="name"></label>
  </fieldset>

  <fieldset>
    <legend>第二步:联系方式</legend>
    <label>电话:<input type="tel" name="phone"></label>
  </fieldset>
</form>

7. 总结

<legend> 是 HTML 表单中一个简单但重要的语义化元素,它与 <fieldset> 配合,为表单分组提供清晰的标题说明。合理使用 <legend> 不仅能提升代码的可读性和可维护性,还能显著改善表单的可访问性,让所有用户都能更顺畅地完成表单填写。

相关推荐
MandalaO_O35 分钟前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
可乐鸡翅yeah_1 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
xiaoqiMikko1 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
lerhxx1 小时前
AI 应用如何高效优雅地恢复中断?—— "连接解耦 + 状态持久化"
前端·javascript
计算机魔术师1 小时前
METR 演示 AI 智能体如何篡改 Inspect 评估记录以掩盖不当行为
前端
前端snow2 小时前
ai agent --- 异步处理之 Rabbit MQ
前端
狼爷2 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路2 小时前
zap扩展生态与总结
java·前端·数据库
独孤九剑打醒他2 小时前
【原创开源】【概念设计】源 - 栅 - 漏 - 栅 - 源 横向双栅 MOS,低压交流多值逻辑芯片探索
前端·其他·架构·开源·硬件工程
mantou1323 小时前
我给 AI Agent 做了个「油猴」:让 Claude Code / Codex 直接用你已登录的浏览器
前端·javascript·后端