CSS - 两列表格

Joh*_*ohn 8 html css

我正在尝试减少与前端代码中的演示相关的html标记量.在我目前正在处理的表单中,我希望有2列表单字段.一种绝对可以做到我想要的方法是:

<html>
<head>
<style>
body {width:400px;}
.col {width:200px; height: 100px; float:left; display:block;}
label, input {display:block;}
</style>
</head>
<body>

<div class="col">
        <label>Field1:</label>
        <input>
</div>
<div class="col">
        <label>Field2:</label>
        <input>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我希望在浏览器中渲染时获得相同的结果,而没有标记中的div标记.所以我做了这样的事情:

<html>
<head>
<style>
body {width:400px;}
label,input {width:200px; height: 30px; float:left; display:block;}
</style>
</head>
<body>
        <label>Field1:</label>
        <label>Field2:</label>
        <input>
        <input>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这很接近,但我希望<label>标记标记出现在<input>代码中的每个标记标记之前,如下所示:

<label>field1</label>
<input>
<label>field2</label>
<input>
Run Code Online (Sandbox Code Playgroud)

但问题是我无法想象可维护的css代码会使标签出现在每个输入字段的顶部.是否有一种很好的方法可以使标记和渲染结果以我想要的方式显示?

cla*_*uzy 13

一种解决方案是将输入放在标签内..

<label>Field1:<input></label>
<label>Field2:<input></label>
Run Code Online (Sandbox Code Playgroud)

然后是示例CSS ..

label {width:200px; height: 30px; display:inline-block;}
input {display: block;}
Run Code Online (Sandbox Code Playgroud)

要么

label,input {width:200px; height: 30px; display:inline-block;}
Run Code Online (Sandbox Code Playgroud)

  • 如果标签的相关输入在其中,则甚至允许标签省略`for`属性,但只允许其中的1个输入.这种语义或任何方式都没有任何问题.我希望每个人都可以为复选框和收音机这样做,所以我不必回家那个小方块/圆圈. (5认同)