这段代码是否正确?
<table>
<tr>
<td>...</td>
</tr>
<tr>
<div>...</div>
</tr>
<tr>
<td>...</td>
</tr>
</table>
不知道语义(和W3C规则)。你能说些什么?
答案 0 :(得分:23)
不,它无效。 tr
个元素只能包含th
和td
个元素。来自HTML4 specification:
<!ELEMENT TR - O (TH|TD)+ -- table row --> <!ATTLIST TR -- table row -- %attrs; -- %coreattrs, %i18n, %events -- %cellhalign; -- horizontal alignment in cells -- %cellvalign; -- vertical alignment in cells -- >
答案 1 :(得分:13)
它不仅无效,而且不起作用!这个加价
<table>
<tr>
<td>The First Row</td>
</tr>
<tr>
<div>The Second Row</div>
</tr>
<tr>
<td>The Third Row</td>
</tr>
</table>
生成此显示的
The Second Row
The First Row
The Third Row
div完全从表中弹出并放在DOM中
之前答案 2 :(得分:5)
不,你不应该在表中使用div
,因为它是一个块级元素。您可以使用CSS覆盖该行为,但如果这是您的目标,则不会使用W3C进行验证。
答案 3 :(得分:4)
不,你不应该在<div>
内使用<tr>
。您可以在<td>
内使用它,因为表是一个正确嵌套的表,尽管这可能不是最佳实践。您实际上可以覆盖div或任何元素的显示设置。您实际上可以将<div>
(默认为阻止)显示为表格单元格,反之亦然。
答案 4 :(得分:2)
这将在quirks模式下工作,但与标准模式兼容的浏览器将无法使用,具体取决于您的doctype。 避免怪异模式是成功生成跨浏览器兼容的Web内容的关键之一
一些现代浏览器有两种渲染模式。 Quirk模式呈现HTML文档,就像旧浏览器一样,例如Netscape 4,Internet Explorer 4和5.标准模式根据W3C建议呈现页面。根据HTML文档中存在的文档类型声明,浏览器将切换到quirk模式或标准模式。如果没有文档类型声明,浏览器将切换到quirk模式。
http://www.w3.org/TR/REC-html32#dtd
JavaScript不应该表现得不同;但是,JavaScript操作的DOM对象可能有不同的行为。
答案 5 :(得分:1)
假设你的表格行一般有5列,你希望你的div占据表格的整个宽度。以下应该可以解决问题。
<tr>
<td colspan=5>
<div class="some-class">
<p>Hey</p>
</div>
</td>
</tr>