Answers:
使用div
instide a td
并不比使用表进行布局的任何其他方式差。(尽管有些人从不使用表格进行布局,而我恰好是其中之一。)
如果您使用div
的td
,你会得到但在一种情况,它可能是很难预测的因素将如何调整大小。div的默认值是从其父对象确定其宽度,而表格单元格的默认值是根据其内容的大小确定其大小。
标准中如何div
定义a 大小的规则td
没有很好地定义,但是对于a 应当如何大小的规则没有很好的定义,因此不同的浏览器使用略有不同的算法。
table-layout:fixed
CSS不是您认为的那样。通过仅计算第一行的大小,它减少了浏览器渲染表时的计算量。
检查XHTML DTD后,我发现允许<TD>元素包含标题,列表以及<DIV>元素之类的块元素。因此,在<TD>元素内使用<DIV>元素不会违反XHTML标准。我很确定HTML的其他现代变体具有与<TD>元素等效的内容模型。
以下是相关的DTD规则:
<!ELEMENT td %Flow;>
<!-- %Flow; mixes block and inline and is used for list items etc. -->
<!ENTITY %Flow "(#PCDATA | %block; | form | %inline; | %misc;>
<!ENTITY %block "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
就像每个人都提到的那样,出于布局目的,这可能不是一个好主意。我到达这个问题是因为我想知道同样的事情,我只想知道它是否是有效的代码。
由于它是有效的,因此您可以将其用于其他目的。例如,我将使用它的是在表行中放置一些精美的“ CSSed” div,然后使用快速jQuery函数允许用户按价格,名称等对信息进行排序。唯一的布局表会给我“垂直顺序”,但是我将通过CSS控制div的宽度,高度,背景等。
它破坏了语义,仅此而已。它可以正常工作,但是如果您“破坏语义”,可能会有屏幕阅读器或其他无法享受处理HTML的功能。