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”是为了向后兼容 部署的浏览器。如果文档包含
<TABLE BORDER>
用户 代理将看到 FRAME=BORDER 和 BORDER=隐含。如果文件 包括<TABLE BORDER=_n_>
那么用户代理应该把它当作 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有啥区别的主要内容,如果未能解决你的问题,请参考以下文章