HTML表单 - 在您看来,它们应该如何完成以及为什么要这样做? (<div> vs. <p>)</p> </div>

时间:2011-06-14 09:05:44

标签: html css forms

我很长一段时间都是开发人员,但是表格一直是我最不喜欢的部分,更具体地说是设计它们!

我真的很想知道你是怎么做形式的,为什么。我在表单字段上与<div> vs <p>的开发人员进行了一些讨论。你会坚持哪一个,为什么?

我所说的一个例子:

<form action="" method="post">
    <p>
        <label for="username">Username:</label>
        <input type="text" name="username" id="username" />
    </p>

    <p>
        <label for="submit"></label>
        <input type="submit" name="submit" id="submit" value="Log In" />
    </p>
</form>

VS

<form action="" method="post">
    <div>
        <label for="username">Username:</label>
        <input type="text" name="username" id="username" />
    </div>

    <div>
        <label for="submit"></label>
        <input type="submit" name="submit" id="submit" value="Log In" />
    </div>
</form>

在造型方面,似乎你可以对两者做同样的事情,那么这只是个人偏好,还是背后使用其中的逻辑呢?

感谢您的时间:)

更新 我最后关注了一篇关于HTML5表单的精彩文章,并且实际上发现它可以更好地表现形式。从发展的角度来看,它们更有组织性。对于任何感兴趣的人,它位于:http://24ways.org/2009/have-a-field-day-with-html5-forms

7 个答案:

答案 0 :(得分:13)

HTML是关于语义的。 {(1}}或username没有理由在段落(submit)中,因为它不是段落。

所以我会改用<p>。好吧,也许<div>没有任何意义。但它比<div>好。

答案 1 :(得分:5)

我更喜欢<div>变体,因为它的语义更接近你要表达和标记的内容。

<p>标记用于文本段落,而<div>是任意类型的通用块。

答案 2 :(得分:3)

我想建议一个选项:

您可以考虑将input包装在其标签内。这样你就可以避免使用其他元素。另外(如果您不需要支持IE6)那么这允许您放弃for。最后,如果input是复选框或单选按钮,那么它允许用户单击整个文本而不是微小控件,就像在大多数操作系统中一样:

<label>Username: <input type="text" name="username" /></label>

此外,我不确定提交按钮的空标签的重点是什么,除了在编写样式表时懒惰。

答案 3 :(得分:2)

以为我会把2美分投入(假设我们都同意语义标记是目标):

虽然可以说表单元素本身不是语义,但这并不意味着它们出现的上下文不是很好。标记所有表单控件没有“一种真实的方式”。

如果控件实际上出现在一段文字中,那很好 - 但几乎不会发生。

  • 例如,如果它是一个有序的复选框列表,请将它们放在<ol>标记中。
  • 如果订单不相关,请在这种情况下使用<ul>
  • 如果是标签/ text_input对,可以认为<dl>元素是合适的
  • 如果是电子表格,请使用<table>(是的,表可以是合适的!事实上,我多次听到(有问题的)论证表格数据是表格式的)

顺便说一句,它被认为是HTML5中的description list,以消除对意义的混淆,以及它是否适用于文字定义术语以外的其他内容。

几乎没有人会说<p>是合适的,但很少有人认为<div> 不合适,因为没有附加的语义。

答案 4 :(得分:2)

从语义上讲,每个标签都通过for属性绑定到其控件。由于出于造型原因,您可能希望出于语义原因包装该对。所以div是合适的。

同样,控件分组有一个专用元素fieldset,因此使用uloldl为此目的没有任何意义,使用它们只是一个列表炎的形式。

答案 5 :(得分:1)

田野集怎么样? - 形式

更合乎逻辑

事实上,你可以按照自己想要的方式设计任何风格

答案 6 :(得分:1)

从语义上讲,我认为div更有意义,因为它们没有语义含义,使用像这样的块容器的唯一原因是出于布局目的。也就是说,我使用段落,但完全出于习惯。这是我使用段落的唯一地方,而没有考虑它们的语义。