<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 文本只能位于字段集之上。
fieldset
和 legend
组合似乎神奇地工作,使得 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).
它没有明确说明图例后面的边框已被擦除,否则图例看起来会带有贯穿装饰。所以浏览器会擦除边框。
回到 IE6 时代,我曾经在 HTML 中模拟 Windows 风格的组框(参见示例),方法是创建一个带边框的 div
,然后将 [= =16=] 将带有纯色背景颜色的边框上的文本设置为 "erase" 框边框。将组文本放置在框的顶部或底部是微不足道的。
这种技术效果很好,除非背景不是纯色。我意识到 <fieldset>
和 <legend>
标签提供与我描述的完全相同的行为,除了非实体背景 are 支持 but 文本只能位于字段集之上。
fieldset
和 legend
组合似乎神奇地工作,使得 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 thefieldset
element as a 'block' box (overriding any explicit 'display' value).
它没有明确说明图例后面的边框已被擦除,否则图例看起来会带有贯穿装饰。所以浏览器会擦除边框。