<fieldset> + <legend> 顶部边框 "erasing" 行为是否由任何标准(HTML 或 CSS)定义?

Is the <fieldset> + <legend> top border "erasing" behavior defined by any standard (HTML or CSS)?

回到 IE6 时代,我曾经在 HTML 中模拟 Windows 风格的组框(参见示例),方法是创建一个带边框的 div,然后将 [= =16=] 将带有纯色背景颜色的边框上的文本设置为 "erase" 框边框。将组文本放置在框的顶部或底部是微不足道的。

这种技术效果很好,除非背景不是纯色。我意识到 <fieldset><legend> 标签提供与我描述的完全相同的行为,除了非实体背景 are 支持 but 文本只能位于字段集之上。

fieldsetlegend 组合似乎神奇地工作,使得 legend 触摸的任何内容都会从 fieldset 边框(实际上从未绘制)中删除。 为什么要这样做? 我发现 examples from W3 说明了该行为,但我在 HTML4/5 规范中找不到任何指示 UA "calculate the width of the legend and don't draw the border there." 这种行为是在任何地方定义的,还是浏览器供应商一致决定应该以这种方式绘制?

如果行为未定义...我想用现代的东西替换旧的 IE6 代码,但我不确定我是否应该使用 fieldset(即使除了表单)还是一些CSS 我不知道擦除边框的功能,就像 fieldset 实现一样。标准提供了什么来依赖 fieldset 或可靠地模拟它?

图例的位置是标准的。 HTML5 rendering

A fieldset element's rendered legend, if any, is expected to be rendered over the top border edge of the fieldset element as a 'block' box (overriding any explicit 'display' value).

它没有明确说明图例后面的边框已被擦除,否则图例看起来会带有贯穿装饰。所以浏览器会擦除边框。