制作网络表单的最佳做法

new*_*bie 16 html forms

是否可以使用表格来制作网页表格,还是应该使用div?我知道如何使用表格,但我应该如何使用div制作表格或者使用表格更好?

<form method="post">
    <table>
        <tr>
            <td>
                <label for="username">Username:</label>
            </td>
            <td>
                <input type="text" name="username" id="username"/>
            </td>
        </tr>
        <tr>
            <td>
                <label for="password">Password:</label>
            </td>
            <td>
                <input type="password" name="password" id="password"/>
            </td>
        </tr>
        <tr>
            <td>
                <input type="submit" name="cancel" value="Cancel"/>
            </td>       
            <td>
                <input type="submit" name="send" value="Send"/>
            </td>
        </tr>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

可能重复: 为什么 - 不使用表格为布局在html中

Red*_*ter 37

不要使用表格,这是一个非常脆弱的语义布局,使用适当的CSS布局.下面是一些演示文稿,解释了表单布局的一些好方法,包括可用性考虑因素.第一个链接更多地是关于代码,第二个链接更多是关于设计和可用性考虑因素:

  • 有充分的理由使用基于div的布局,但它们比表格更脆弱.表格在浏览器中更具可预测性,可控性和一致性. (9认同)
  • @Draemon:我不同意,例如,如果您在输入的左侧有标签,并且要求将它们放在输入的上方,则需要重建整个表,这是一个巨大的PITA.使用CSS,您可以进行一行更改并完成. (9认同)
  • 如果你被要求把它们放在右边?还是在下面?通常,您无法仅在CSS中进行此类布局更改.如果您的源格式化,那么在任何体面的编辑器中重新排列是一个2分钟的工作,使用任何一种方法,绝对不是"巨大的PITA". (2认同)

Ian*_*n P 5

生存规则:仅使用表格显示表格数据.

这一直对我有用....

  • 表格数据不是表格数据,其中一些单元格/字段是您要填写的吗? (3认同)
  • 澄清 - 我不认为表格是表格数据. (2认同)

Tat*_*nen 5

在我看来,表格绝对最好的格式是在带有标签的字段集中使用无序列表.无论如何,这是最正确的语义方式:

<form method="post" action="foo.php">
    <fieldset>
        <legend>Some fields</legend>
        <ul>
            <li>
                <label for="foo">Foobar</label>
                <input type="text" name="foo" id="foo" />
            </li>
        </ul>
    </fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)

字段集不是强制性的,但可以使用另外的枯燥形式.ul看起来像表单的基本CSS 可能是这样的:

form ul {
    list-style: none;
    margin: 0;
}

form ul li {
    margin-bottom: 10px;
}

form ul li label {
    display: block;
    float: left;
    width: 150px;
    line-height: 24px;
}
Run Code Online (Sandbox Code Playgroud)

  • 请告诉我的客户"表单不应有多列".哈! (3认同)
  • @Diodeus - 是的,你可以带马到水,但你不能让它思考.:) (2认同)