在html中显示表单时使用表标签是不好的设计?

时间:2008-09-20 21:30:05

标签: html css forms layout

我一直听说div标签应该用于布局目的而不是table标签。那么这也适用于表单布局吗?我知道表单布局仍然是一种布局,但似乎使用div创建表单布局需要更多htmlcss。那么考虑到这一点,表单布局应该使用div标签吗?

12 个答案:

答案 0 :(得分:22)

是的,它确实适用于表单布局。请记住,还有像FIELDSET和LABEL这样的标签,专门用于向表单添加结构,因此它不仅仅是使用DIV的问题。您应该能够使用非常小的HTML标记表单,并让CSS完成剩下的工作。 E.g:

<fieldset>
    <div>
         <label for="nameTextBox">Name:</label>
         <input id="nameTextBox" type="text" />
    </div>
    ...
</fieldset>

答案 1 :(得分:13)

我认为使用优秀的HTML和CSS很好地布局表单是一件很难的事。 CSS为您提供的布局控制级别远远超出任何笨重的基于表格的布局。这不是一个新想法,正如2006年的this Smashing Magazine article所示。

我倾向于在表单中使用以下标记的变体。我的CSS中有一个通用的.form风格,然后是文本输入,复选框,选择,文本等等的变体。

.field label {
  float: left;
  width: 20%;
}

.field.text input {
  width: 75%;
  margin-left: 2%;
  padding: 3px;
}
<div class="field text">
  <label for="fieldName">Field Title</label>
  <input value="input value" type="text" name="fieldName" id="fieldName" />
</div>

表不是邪恶的。当需要显示表格数据时,它们是目前最好的选择。表格恕我直言不是表格数据 - 它们是表格,而CSS提供了足够的工具来布置表格,无论你喜欢什么。

答案 2 :(得分:4)

如果您只需要一个简单的行列夹式布局,您不应该对使用表感到内疚。我不知道有人可以称之为“糟糕的设计”只是因为它不是CSS。我见过很多糟糕的基于CSS的设计。我喜欢CSS并且认为它在许多方面远远优于传统的嵌套表格布局,但做有效的工作和最容易维护的东西,并转向更重要,更有影响力的决策。

答案 3 :(得分:3)

一般原则是,您希望使用任何最能传达您想要的语义内容的HTML元素,然后依靠css直观地表示该语义内容。遵循该原则可以获得许多内在的好处,包括更容易的站点一般视觉变化,搜索引擎优化,多设备布局和可访问性。

所以,简短的回答是:你可以做任何你想做的事情,但最佳实践建议你只使用表格标签来表示表格数据,而是使用任何html标签来表达你想要表达的内容。最初可能会有点困难,但是一旦你习惯了这个想法,你就会想知道为什么你会以任何其他方式做到这一点。

根据您尝试对表单执行的操作,使用语义标记和css不应该使用更多标记,尤其是如果您依赖于css的级联属性。此外,如果您的站点中的许多页面上有多个相同的表单,则语义方法在编码和维护方面都更有效。

答案 4 :(得分:3)

为了使表单尽可能可访问且语义正确,我使用以下格式:

  <fieldset>
  <ol>
    <li>
      <label for='text_field'>Text Field</label>
      <input type='text' name='text_field' id='text_field' />
    </li>
  </ol>
  </fieldset>

答案 5 :(得分:3)

我主要使用CSS,直到CSS变成拖动。例如,使用表而不是css创建3+列(3组标签+表单字段)形式要容易得多。我无法使用纯css在所有主流浏览器中正确显示布局,而且我花了太多时间让它工作。所以我说拧了它,我用表很容易做到了。表格还不错。

答案 6 :(得分:2)

这是一个灰色区域。并非标记中的所有内容都有明确的界限,这是您可以使用个人偏好并进行判断调用的一种情况。它不太符合数据组织的想法,但细胞是跨多个轴相关的,这是我用来判断某些东西是否适合表格的经验法则。

答案 7 :(得分:1)

使用table而不是div来布置表格当然更容易,但要记住,表格应该是有意义的 - 它以常规方式呈现数据供用户查看,而不仅仅是将框放在屏幕上给定的订单。通常,我认为表单布局应该使用div来决定表单元素的显示方式。

答案 8 :(得分:1)

如果您选择了一个表来布局表单(左侧是标签,右侧的字段,如其中一个答案中所述),那么我通常不会在这些表单布局问题中讨论过的一件事情。那个布局是固定的。在工作中,我们最近不得不用阿拉伯语快速“概念验证”我们的网络应用程序。使用表格进行表单布局的应用程序基本上卡住了,而我能够通过更改CSS文件中的大约十行来反转所有表单字段和标签的顺序。

答案 9 :(得分:0)

如果您的表单以表格格式排列(例如,左侧的标签和右侧的字段),则表示是,请使用表格标签。

答案 10 :(得分:0)

表单不是“演示文稿”,您要求提供数据,通常不会提供数据。我在表格数据中使用了大量的内联编辑。显然,当从表示切换到输入时,我使用数据中心 - td作为输入元素的持有者。

答案 11 :(得分:0)

我在这里看到的大部分答案似乎都合适。我唯一要添加的东西,特别是对无动于衷或马特先生来说,就是使用<dl>/<dt>/<dd>。我相信这些代表了语义列表。

<dl>
  <dt><label for="nameTextBox">Name:</label></dt>
  <dd><input value="input value" type="text" name="fieldName" id="fieldName" /></dd>
</dl>

你可能想要重新考虑这些,但这在语义上说是发生了什么,那就是你有一个“术语”(<dt>)和“定义”(<dd>)的列表,术语是标签,定义是用户输入的值。