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

相关推荐
mldong3 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
tqs_123454 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃5 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
尾善爱看海5 小时前
Vue 面试收官篇:SSR、性能优化落地、30 道高频面试题精讲(附标准答案)
前端·javascript·vue.js·面试·vue
Flynt5 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet5 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
驳是6 小时前
一个组件,提升 react-router 开发的幸福感
前端·preact
GreenTea6 小时前
OpenAI Agents API 上手实测:一次调用把整个 agent loop 甩给 OpenAI
前端·后端·算法
星云API技术支持6 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
niucloud-admin6 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github