正如已经说过的,他们做同样的事情,你不应该使用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
属性。
你应该注意到,同样,这是现在已经过时的功能。 CSS是首选的方法,正如在这里链接的文章中所引用的。 HTML5不再支持'frame ='属性。 –