2

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

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

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

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

4

4 回答 4

4

没有区别; 他们是彼此的别名。从HTML 4.01 规范

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

  • ...
  • box:所有四个方面。
  • border:所有四个方面。

今天,几乎唯一正确使用它们的方法就是使用它们。表格边框样式应该使用 CSS 而不是表现属性来定义,这frame是一个例子,虽然是一个相当模糊的例子。无论如何,浏览器对该属性的支持似乎相当不完整,这也是由于其晦涩难懂。

于 2012-10-25T20:28:08.413 回答
1

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

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

即它们是相同的 http://www.w3schools.com/tags/att_table_frame.asp

于 2012-10-25T20:28:07.550 回答
1

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

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

包含值“Border”是为了向后兼容已部署的浏览器。如果文档包含<TABLE BORDER>用户代理,则会看到 FRAME=BORDER 和 BORDER= implicit。如果文档包含<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 属性。

因此,在编写规范之前,浏览器已经使用了“边框”,但与 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属性。

于 2012-10-25T21:39:03.687 回答
0

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

frame 意味着应该有所有四个边框,而 box 是相同的,但可以与规则一起使用。像这样:rules="none"

于 2012-10-25T20:31:11.573 回答