首页/新闻资讯/正文详情

HTML——那些自带交互特征的HTML元素(label元素、fieldset元素、legend元素)

发布时间:2026/9/26 4:17:54 来源:云帆数科 栏目:资讯中心
HTML——那些自带交互特征的HTML元素(label元素、fieldset元素、legend元素)
那些自带交互特征的HTML元素3、控件伴侣label元素3.1、label元素的价值所在3.1.1、产生关联的方式3.1.2、for属性的使用3.2、必学的单选按钮、复选框技术4、什么时候使用fieldset元素和legend元素4.1、表单分组与fieldset元素的使用4.2、特殊且唯一的边框样式4.3、fieldset元素的独家功能3、控件伴侣label元素虽然label元素的语义是“标签”​但是往往标签内容并没有使用label元素而是使用a元素然后使用reltag来表达语义。原因很简单标签内容通常包含一类信息的集合自带链接所以只能舍弃label元素。有人可能会有疑问那我可不可以像下面这样书写既保留了链接的功能又保留了“标签”的语义请别这样做这种用法很奇怪因为label元素和a元素都带有点击行为不建议混用。3.1、label元素的价值所在label元素可以看成一个“伴生”元素注意“伴生”这里打了引号旨在表明label元素并不是真的不能单独使用而是需要和其他元素产生关联才能体现其价值。那么是哪些元素呢第一类是传统的表单控件元素各类button、input、textarea和select等元素。第二类是在接下来几章会介绍的progress和meter元素。第三类就是非典型的表单元素output元素。除此之外没有任何使用label元素的理由当然对于非链接标签你硬要使用label元素也不会有人说什么​。与之相对如果遇到这些元素也务必使用label元素不少人在日常开发时并未注意到这一点比如一个登录表单往往会使用如下所示的HTML代码从视觉表现上讲你这么写没什么问题无论是布局还是样式都可以很好地还原设计稿但在交互体验方面还有进步的空间很简单将span元素换成label元素如下所示这样做有两点好处语义更精准类似屏幕阅读器这样的设备识别体验更好例如当用户专注于表单输入时屏幕阅读器将读出标签信息这样用户就更容易理解应该输入什么数据。优雅地扩大了输入框的响应区域这一点值得好好说一说。当label元素和表单控件元素产生关联的时候点击label元素表单元素会自动处于激活态。输入框表现为聚焦单选按钮和复选框表现为选中态切换。尤其是后者在用户体验层面极为受用因为单选按钮和复选框的点击区域都很小尤其在移动端很难一次就选中因此使用元素扩大点击区域就显得非常有必要。例如此时哪怕你点击文字复选框也会被选中如图所示。这是所有前端开发人员都务必知道的交互常识。3.1.1、产生关联的方式label元素和特定元素产生关联的方式有两种一种是通过特定的HTML属性另一种是通过HTML结构关系。通过HTML属性产生关联的方式就是使用for属性使其值等同于表单控件元素的id属性值例如通过HTML结构关系产生关联的方式就是将表单控件元素放在label元素之中例如以上两种方式在如今都是可以放心使用的。这里正好展开讲一下for属性。3.1.2、for属性的使用在HTML中for属性的值是不能使用elment.for这样的语法获取的因为for是个JavaScript关键字要使用htmlFor代替。例如下图所示就是上述代码在演示页面所在的控制台运行的结果。还没完接下来介绍的这个知识想必绝大多数人都不知道那就是output元素也支持for属性更关键的是output元素的for属性支持多个值。使用示意如下用来标示输出结果关联的表单元素。在第2章讲a元素的rel属性的时候曾提到空格分隔的HTML属性对象会是个DOMTokenList对象例如Element.classList和HTMLAnchorElement.relList问题来了这里的output元素的for属性也支持多值那么也会存在对象吗答案是肯定的HTMLOutputElement.htmlFor返回的就是一个DOMTokenList对象包括add()、remove()等一系列方法可以处理for属性值。于是就出现了HTML世界中的一个奇观对于同样的一个HTML属性在label元素中返回的是字符串在output元素中返回的则是一个对象如图所示。本节目前展示的所有代码和演示效果均可以通过在浏览器中输入地址https://www.htmlapi.cn/3/3-1.html访问来体验。3.2、必学的单选按钮、复选框技术虽然在语义上label元素和progress元素、meter元素、output元素这三个元素有关联但在行为上却没有什么表现。唯一有点反应的就是让output元素变成可输入元素后例如设置contenteditable“true”​也是可以在label元素被点击后获得焦点的。不过很难想象会有什么场景需要让output元素变成可输入的因此对于这三个元素label元素使用与否意义不大我们不用在意不妨把注意力放在单选按钮和复选框这两个元素上和label元素配合使用可以迸发出强大的生命力。例如如图所示的支付金额选择效果你会怎么实现试试使用label元素可以无JavaScript实现我们所需要的交互效果核心实现思路如下。(1)将label元素作为点选的主体元素内部放置隐藏的单选按钮元素HTML代码示意如下此时点击label元素会自动触发内部单选按钮元素的选中态。(2)使用合适的CSS选择器匹配单选按钮的状态变化并设置对应的CSS样式。例如使用has()伪类于是完整的交互效果就实现了是非常健壮的实现。上述效果你可以通过在浏览器中输入地址https://www.htmlapi.cn/3/3-2.html访问来体验。如果不是想实现单选交互而是要实现AB状态来回切换的交互效果就像图所示的开关则可以使用inputepub:type“checkbox”复选框进行模拟由于两种交互效果的实现原理一致代码类似这里就不重复展示了。4、什么时候使用fieldset元素和legend元素有些元素你没用过并不表示这些元素没有用只是因为你了解得少不知道它们的价值所在。下面从语义、样式和功能三个角度介绍什么时候应该使用fieldset元素和legend元素。4.1、表单分组与fieldset元素的使用先从案例入手实现一个图3-32所示带有多个选择项的问答布局。一定有很多人会使用如下所示的HTML结构对于以视觉为主要感官的用户群体来讲上述代码的最终视觉呈现是没有问题的上面有问题信息下面有单选选项。但是对于以触摸为主的盲人用户上述代码就有问题。因为最开始的问题和下面的两个单选选项是有关联的或者说带有“组”的关系而上述HTML代码并未建立起对应的联系。此时当用户触摸移动端交互方式两个单选按钮的时候听到的仅仅是label元素中的“有”和“没有”两个词至于对应的问题是什么不得而知或者是触摸到了问题但是并不知道对应的选项是什么这时用户体验就不好。那么如何解决这个问题呢使用fieldset元素和legend元素HTML代码如下其中fieldset元素表示组的意思专门用在form表单元素中表示一组内容legend元素表示这个组的标题在这个例子中就是问题内容。此时再使用Tab键导航桌面端交互方式form表单单选按钮聚焦屏幕阅读识别​就会清晰读出“你有港澳通行证吗​”​。这样用户就能清楚地知道下面的“有”和“没有”对应的到底是什么就不会有困扰了。根据我使用桌面端VoiceOver现在叫作“旁白”​的实地测试结果聚焦并选中第二个单选项的时候朗读的内容是“没有已选择单选按钮第2项共2项​你有港澳通行证吗​组”​如图所示​是不是非常好理解​注意随着软件的升级迭代朗读的文本内容会有所变化。​图中fieldset和legend元素应用下的旁白朗读效果当然并不是说只要有表单就一定要使用fieldset元素和legend元素。那么什么时候需要使用什么时候不需要使用呢核心要点就是表单中的内容中有没有“分组”的概念例如要实现一个搜索输入框表单就没必要使用fieldset元素和legend元素但是类似于外卖或网购的收货地址的填写就非常适合使用它们因为省、市、区这三个下拉框和最后的详细地址输入框都属于“地址”这个主题案例如下4.2、特殊且唯一的边框样式虽然现在的CSS已经很强大了但是要实现一个图所示的样式效果还是很困难的。这种文字底部镂空、两侧有边框线的效果最简单的实现方式一定是使用fieldset元素和legend元素仅使用一行CSS代码即可实现该效果。如果我们希望legend元素里面的文字居中对齐而不是飘在左上角也非常简单像下面这样设置就可以了。此时效果如图所示。我们还可以进一步打开思路如果只保留上边框同时将边框样式改为虚线岂不就实现了一个宽度自适应的分隔线效果。此时的效果如图所示。上述边框或分隔线效果均可以在线体验在浏览器中输入地址https://www.htmlapi.cn/3/4-1.html访问即可。不过虽然使用legend元素模拟分隔线非常轻松但是这种做法并不推荐因为legend元素的语义是“标题”​而不是“分隔线”​。我更建议大家使用hr元素模拟分隔线。4.3、fieldset元素的独家功能除语义和样式外fieldset元素还有一个非常稀缺的功能就是可以批量禁用表单元素此能力只有fieldset元素才有。例如就这么简单此时fieldset元素里面的所有表单控件元素都无法输入同时可以匹配CSSdisabled伪类其效果和在每一个表单控件元素上设置disabled属性一样。不要使用CSS pointer-eventsnone声明禁用表单了也不要再使用HTML inert属性去禁用表单了这些方法只是表面上的禁用。下图所示的就是某个复杂表单使用fieldset元素批量禁用后的效果。上述效果你可以通过在浏览器中输入地址https://www.htmlapi.cn/3/4-2.html访问来体验。

相关推荐

豆包工作和传统办公系统有什么不同
豆包工作和传统办公系统有什么不同

在企业日常办公场景里,传统办公系统大多聚焦于流程审批、文件存储、表单填报等标准化固定操作,依赖人拆解任务、查找资料、撰写内容,系统仅作为载体存储和流转信息。面对复杂、多步骤、需要持续研究和内容产出的长程任务时,传统办… · 2026/9/26 4:17:48

Playwright性能优化:10个技巧把47分钟测试压到12分钟
Playwright性能优化:10个技巧把47分钟测试压到12分钟

去年我接手过一套 Playwright 测试,全量跑完要 47 分钟,CI 排行榜里每跑一次要排队,功能发布前大家都习惯先去冲杯咖啡再点“跑测试”按钮。后来花了差不多一周时间做性能优化,把整套测试压到了 11 分 40 秒,而且稳定性… · 2026/9/26 4:17:48

NPC520 UK的官网是 www npc520 uk
NPC520 UK的官网是 www npc520 uk

官网是 www npc520 uk这是一家很知名的游戏清单下载站 · 2026/9/26 4:17:48

鸿蒙ArkTS智慧农业作物管理:从种植建档到农事追溯
鸿蒙ArkTS智慧农业作物管理:从种植建档到农事追溯

1. 内容整体设计与思路拆解聊了八篇鸿蒙开发,设备接入、数据采集、协议解析都理顺了,后台收到的留言多起来,问得最多的问题基本一致:数据收上来之后怎么变成农户真正愿意用的东西?所以第9篇我把焦点从底层链路拉回到业… · 2026/9/26 6:14:03

运输问题与指派问题:从线性规划建模到匈牙利算法的运筹实战
运输问题与指派问题:从线性规划建模到匈牙利算法的运筹实战

简介:运输问题与指派问题是运筹学中经典的资源优化分配模型,广泛应用于物流调运、生产调度与任务分配场景。这份PPT学习教案面向运筹学初学者及相关专业学生,系统讲解两类问题的基本概念、数学模型和电子表格建模方法,重点涵盖产销… · 2026/9/26 6:14:03

MinGW-w64离线安装完全指南:环境确定性与ABI兼容性保障
MinGW-w64离线安装完全指南:环境确定性与ABI兼容性保障

1. 为什么“离线安装”这件事,在嵌入式开发、军工仿真和教育机房里,比网速还重要MinGW-w64不是个新东西,但每次在客户现场打开官网下载页面,看到那个写着“Download from SourceForge”的蓝色按钮,我就下意识点开任务管… · 2026/9/26 6:14:03

GitHub精选四款AI开源工具,打造从资料到PPT的智能工作链
GitHub精选四款AI开源工具,打造从资料到PPT的智能工作链

不知道你 GitHub 的 star 列表里躺着多少个 AI 项目。就我自己而言,账号里一度存了 80 多个,其中一半以上是点进去翻两屏 README 就再也没打开过的 Demo 项目。后来我给自己定了条规矩:每个季度只允许自己新收藏 5 个,前提是它真能… · 2026/9/26 6:14:03

OpenFeign接口契约先行:用代码定义微服务边界
OpenFeign接口契约先行:用代码定义微服务边界

“接口契约先行”这句话听起来像项目启动会上的漂亮口号,但它解决的全是实际联调中的痛。服务一拆,调用方和提供方各自在自己的代码库里狂奔,等到环境联调时才发现:你返回的字段我根本不认识,我约定的格式你理解成了另… · 2026/9/26 6:14:03

Harness Anything:桌面应用界面自动化新范式
Harness Anything:桌面应用界面自动化新范式

1. 这不是“AI写脚本”,而是让AI直接接管你的办公软件界面你有没有过这种时刻:刚整理完Zotero里200篇文献,突然发现所有PDF标题都缺了年份前缀;WPS表格里上千行数据要批量插入超链接,但VBA宏调试了三小时还是报错&… · 2026/9/26 6:13:57

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码