我正在上网络编程课程,课堂上没有人可以说明在html表格中框架值框和边框之间有什么区别。以下是我所谈论的一个例子。
<table frame="border">
<!-- some basic table data -->
</table>
<table frame="box">
<!-- some basic table data -->
</table>
就我所知,这两个表将以相同的方式呈现。是否有任何潜在的差异,一开始可能不明显,或者是否有正确或错误的方式使用它们?
答案 0 :(得分:4)
没有区别;他们是彼此的别名。来自HTML 4.01 spec:
此属性指定围绕表格的框架的哪些边可见。可能的值:
- ...
box:
四面都有。border:
四面都有。
今天,使用它们的唯一正确方法是不使用它们。应使用CSS而不是表示属性来定义表边框样式,其中frame
是一个示例,尽管是一个相当模糊的属性。无论如何,浏览器对此属性seems quite patchy的支持,再次归因于其默默无闻。
答案 1 :(得分:1)
答案 2 :(得分:1)
正如已经说过的那样,他们做同样的事情,你也不应该使用frame属性。
要理解为什么同一事物有两个不同的值,需要阅读RFC 1942 HTML Tables,其中说:
价值&#34;边境&#34;包含用于向后兼容 部署浏览器。如果文档包含
<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要求枚举属性值是唯一的 对于每个元素,独立于属性名称。这导致 &#34; none&#34;,&#34; left&#34;,&#34; right&#34;和#34;所有&#34;。价值 选择FRAME是为了避免与RULES,ALIGN和 VALIGN属性。这提供了未来验证的措施,因为它 预计将添加FRAME和RULES属性 到本规范的未来版本中的其他表元素。一个 另一种方法是使FRAME成为CDATA属性。的共识 HTML-WG是能够使用SGML验证的好处 基于枚举值检查属性的工具超过了 需要一致的名字。
所以&#34;边界&#34;在编写规范之前,浏览器已经在使用它,但它与SGML的微妙兼容,所以&#34; box&#34;被添加以提供与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
属性。
答案 3 :(得分:0)
它们几乎相同,但由于它们在名称上下文中有所不同,因此它们取决于不同的浏览器支持。
框架意味着应该有所有四个边框,而框架是相同的,但它可以与规则一起使用。像这样:rules =&#34; none&#34;