我有时听说人们不再使用表格来格式化他们的表格,这是不是开始成为一种落后的趋势?为什么,为什么不呢?
从语义上讲,表应该包含表格数据。从这个意义上说,使用table标记没有错。
出错的地方是当人们开始使用表格进行布局时,他们这样做是因为这很容易。页面布局不是表格数据,因此在语义上不应该在表标记中。
你可以这样做,它会起作用,但你也可以冷吃蛋奶沙司,它也会起作用。这个想法更多的是正确地做,而不仅仅是做
在理想的情况下,您将能够使用<fieldset>
s、<label>
s和其他与表单相关的标记生成表单。
<label for="usernameID">Username:</label> <input type="text" name="username" id="usernameID" />
然后,您可以对标签和输入进行样式设置,并且您的HTML中没有任何错误。
事实上,你可能最终会用<div>
和<span>
来包装东西,但要尽量保持理智,不要过度使用它们。如果你曾经认为"我实际上在这个表单中有很多非表单标签",可能有更好的方法可以做到这一点(尽管你的方法可能仍然有效(。
几个原因:
-
标记应该是语义的。这意味着标记中的元素应该说明一些关于内容的有意义的内容。一个段落应该在
<p>
标签中,在<h1>
到<h6>
中的标题中,等等。相比之下,<td>
标签告诉你关于<label>
的任何有意义的东西。另一方面,如果您正在创建元素周期表的表示,<td>
标记是非常合适的。HTML5继续并加强了这一趋势,因为现在我们还获得了
<nav>
和<section>
等新元素,使标记和内容之间的连接更加紧密。 -
桌子的样式和维护都很麻烦。如果你在
<label>
里面有一个<input>
,在<td>
里面有那个<tr>
里面有<tbody>
里面有一<table>
,那么,这是一大堆嵌套元素——谁想处理它呢?尽量减少嵌套,这样你的CSS就不会那么复杂,标记也更容易阅读。
将表用于任何非表格数据的内容通常是不合适的。这主要是因为表格对通常不会放在电子表格中的东西没有任何语义。
使用表来格式化表单很容易,尤其是如果你习惯了它,但最好使用其他更好地描述你放入其中的数据的方法。