html表格中frame属性box和border有啥区别

Posted

技术标签:

【中文标题】html表格中frame属性box和border有啥区别【英文标题】:What are the differences between frame attributes box and border in html tableshtml表格中frame属性box和border有什么区别 【发布时间】:2012-10-16 02:46:18 【问题描述】:

我正在学习一些关于 Web 编程的课程,但包括讲师在内的课程中没有人能说出关于 html 表格的框架值框和边框之间的区别。这是我所说的一个例子。

<table frame="border">
<!-- some basic table data -->
</table>

<table frame="box">
<!-- some basic table data -->
</table>

据我所知,这两张表的渲染方式相同。是否有任何一开始可能不明显的潜在差异,或者有正确或错误的使用方式?

【问题讨论】:

【参考方案1】:

正如已经说过的,它们做同样的事情,无论如何你都不应该使用 frame 属性。

要了解为什么同一事物有两个不同的值,有必要阅读RFC 1942 HTML Tables,它说:

包含值“Border”是为了向后兼容 部署的浏览器。如果文档包含&lt;TABLE BORDER&gt; 用户 代理将看到 FRAME=BORDER 和 BORDER=隐含。如果文件 包括&lt;TABLE BORDER=_n_&gt; 那么用户代理应该把它当作 FRAME=BORDER 除非 n=0 适合 FRAME=VOID。

注意:最好为 FRAME 选择值 与 RULES 属性和用于对齐的值一致。 例如:none、top、bottom、topbot、left、right、leftright、all。 不幸的是,SGML 要求枚举的属性值是唯一的 对于每个元素,独立于属性名称。这引起 “none”、“left”、“right”和“all”的直接问题。价值 选择 FRAME 是为了避免与 RULES、ALIGN 和 VALIGN 属性。这提供了一种未来证明的措施,因为它 预计将添加 FRAME 和 RULES 属性 到本规范未来修订中的其他表格元素。一个 替代方法是将 FRAME 设为 CDATA 属性。的共识 HTML-WG 是能够使用 SGML 验证的好处 基于枚举值检查属性的工具胜过 需要一致的名称。

因此,在编写规范之前,浏览器已经使用了“边框”,但与 SGML 的细微之处不兼容,因此添加了“框”以提供一种与 SGML 兼容的方式来做同样的事情。

因为浏览器实际上并不遵循 SGML 规则,所以不容易看到上面的效果,但是 HTML5 之前的验证器做到了,并且可能会看到很小的效果。考虑这个标记:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" 
                 "http://www.w3.org/TR/html4/strict.dtd">
<title>Test</title>
<table border border=5>
<tr><td>Test</td></tr>
</table>

通常有两个同名的属性会导致验证器报告错误,但是在 W3C HTML 验证器上尝试这个,你会看到它通过了验证。这是因为验证器将第一个 border 属性视为 frame="border" 的缩写形式,因此没有名称冲突。

另一方面,浏览器确实会看到名称冲突,并会忽略 border=5 属性。

【讨论】:

【参考方案2】:

没有区别;他们是彼此的别名。来自HTML 4.01 spec:

此属性指定表格周围框架的哪些边可见。可能的值:

... box: 四个方面。 border: 四个方面。

今天,使用它们的唯一正确方法是使用它们。表格边框样式应该使用 CSS 而不是表现属性来定义,frame 就是一个例子,虽然是一个相当模糊的例子。浏览器支持这个属性 seems quite patchy 无论如何,还是因为它的晦涩难懂。

【讨论】:

【参考方案3】:

它们几乎相同,但由于名称上下文不同,它们取决于不同的浏览器支持。

frame 表示应该有四个边框,而 box 是一样的,但是可以和规则一起使用。像这样:rules="none"

【讨论】:

【参考方案4】:

box 外边框显示在所有四个边上

border 外边框显示在所有四个边上

即他们是一样的 http://www.w3schools.com/tags/att_table_frame.asp

【讨论】:

您还应该注意,现在已弃用此功能。 CSS 是首选方法,如此处链接的文章中所引用。从 HTML5 开始,不再支持 frame= 属性。

以上是关于html表格中frame属性box和border有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

box-sizing的相关属性

box-sizing属性中的border-box学习分享

表格单元格增加宽度,尽管盒子大小:border-box

Border-radius 和 box-shadow 属性不影响代码

box-sizing属性

HTML