<div>成a:它是否正确?</div>

时间:2011-08-13 15:00:47

标签: html html-table tablerow

这段代码是否正确?

<table>
    <tr>
        <td>...</td>
    </tr>

    <tr>
        <div>...</div>
    </tr>

    <tr>
        <td>...</td>
    </tr>    
</table>    

不知道语义(和W3C规则)。你能说些什么?

6 个答案:

答案 0 :(得分:23)

不,它无效。 tr个元素只能包含thtd个元素。来自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中

之前

请参阅http://jsfiddle.net/ELzs3/1/

答案 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>