2012-10-25 73 views
2

我在Web编程上学习了一些类,包括教师在内的班级中没有人可以说出框架值框和边框之间的区别到HTML表格。这是我正在谈论的一个例子。在html表格中框架属性框和边框之间有什么区别

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

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

据我所知,这两个表格将呈现相同的方式。是否有任何潜在的差异,最初可能并不明显,或者有没有正确或错误的方式来使用它们?

回答

4

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

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

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

今天,几乎使用它们的唯一正确途径是使用它们。表格边框样式应该使用CSS来定义,而不是表示属性,其中frame就是一个例子,尽管它很模糊。无论如何,浏览器对这个属性seems quite patchy的支持也是由于其默默无闻。

1

框外边框四面出

边境境外显示四面

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

+1

你应该注意到,同样,这是现在已经过时的功能。 CSS是首选的方法,正如在这里链接的文章中所引用的。 HTML5不再支持'frame ='属性。 –

0

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

框架意味着应该有所有四个边框,而框是相同的,但它可以与规则一起使用。像这样:规则=“无”

1

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

要理解为什么会有对同一事物的两个不同的价值观,这是必要读RFC 1942 HTML Tables它说:

值“边界”是为了与 部署浏览器的向后兼容性。如果一个文件包含<TABLE BORDER>,用户代理将看到FRAME = BORDER和BORDER = 暗示。如果文档 包括<TABLE BORDER=_n_>那么用户代理应该将其视为 FRAME = BORDER,除非如果n = 0其中FRAME = VOID是合适的。

注意:最好选择与RULES属性和用于对齐的值一致的FRAME 的值。例如:none,top,bottom,topbot,left,right,leftright,all。 不幸的是,SGML要求每个元素的枚举属性值都是唯一的 ,与属性名称无关。这会导致 立即出现“无”,“左”,“右”和“全部”的问题。已选择用于FRAME的值为 以避免与RULES,ALIGN和VALIGN属性冲突。这提供了未来打样的量度,因为它 预期的是,FRAME和规则的属性将被添加到 未来修订版其他表元素本说明书。一个 替代方案是使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属性。

相关问题