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> 不仅能提升代码的可读性和可维护性,还能显著改善表单的可访问性,让所有用户都能更顺畅地完成表单填写。

相关推荐
胡萝卜术1 小时前
权限系统的四道防线:从数据库事务锁到操作级保护规则的完整设计
前端·javascript·面试
运行时异常1 小时前
WMS 仓储系统集成 AI Agent 实战】第 1 讲:从零搭建开发环境——pgvector 装不上、模型选错、依赖冲突,一天踩完三个大坑
java
夕除1 小时前
redis--008
java·jvm·数据库
真夜1 小时前
RN热更新安全问题
前端·react native
Zeroplucky1 小时前
Binder 线程池耗尽案例:持锁同步调用 VHAL 导致 SystemUI 卡顿或 ANR
前端
Zeroplucky1 小时前
从 registerContentObserver 剖析 Android Binder 流程
前端
wear工程师1 小时前
线程池队列满了会怎样?从拒绝策略看懂 ThreadPoolExecutor 的扩容顺序
java
晓晓_za8986681 小时前
多租户 GEO 优化系统源码架构:权限隔离与数据分离实现
java·tcp/ip·spring·缓存·微服务·架构
Yinlin1241 小时前
深入悬浮组件实现
前端