2

我在理解 css 时遇到以下问题。

我有一个注册表。在那种形式中,我使用了一个字段集。现在我想在每一行旁边放置两个输入字段。上面的每个字段也应该有一个标签。

所以我想要实现的是:

    label 1                         label 2
    _______________                 _______________ 
   (_______________)               (_______________)

    label 3                        label 4
    _______________                 _______________ 
   (_______________)               (_______________)

我是 CSS 新手,在理解 float 和 clear 方面存在一些问题。

到目前为止,我有以下结构:

           _______________              
label 1   (_______________)             
           _______________              
label 2   (_______________) 
           _______________              
label 3   (_______________) 
           _______________              
label 4   (_______________) 

这是我的想法:

我将字段集设置为特定的高度和宽度:

fieldset { height: 330px; width: 550px;}

之后我用来为我的标签和输入设计设置信息:

label { font-family: Arial, Helvetica, sans-serif;
    font-size: 20px;
    font-weight: bold;
    color: #ECECEC;
    text-decoration: none;
    width: 100px;
}
input {
    width: 250px;
    height: 25px;
    color:#bababa;
    padding:5px;
    font-size: 12px;
    -moz-border-radius: 6px;  
}

到目前为止的设计。现在我想,由于旁边的 2 个列,我想实现它需要每一个都浮动。所以我建立了这两个类:

.fl { float: left; margin-bottom:15px;}
.fd { clear: left; margin-bottom:15px;}

在类 fl float 中,意味着将 box1 设置为浮动属性,即 box2 将位于其左侧。fd 类将用于下一行。这样 box3 将分成另一行。边距只是为了在每个字段之间保留一些空间。

在我的 html 中,我得到了以下代码:

<form>
<fieldset>
<legend>Headline for fieldset</legend>
<ul>

<li class="fl">
<label for="label1">label 1</label>
<input type="text" id="label1" name="label1" tabindex="10" autocomplete="off">
</li>

<li class="fl">
<label for="label2">label2</label>
<input type="text" id="label2" name="label2" tabindex="20" autocomplete="off">
</li>

<li class="fd">
<label for="label3">label3</label>
<input type="text" id="label3" name="label3" tabindex="30" autocomplete="off">
</li>

<li class="fl">
<label for="label4">label4</label>
<input type="text" id="label4" name="label4" tabindex="40" autocomplete="off">
</li>

</ul>
</fieldset>
</form>

所以我有以下问题:

1. 我怎样才能将标签放置在输入字段上方?

2. 我怎样才能达到将它们放在旁边的主要目标?

3. 如何调整一行输入字段之间的间距?

如果有人可以帮助我,我真的很感激。多谢。

4

3 回答 3

1

在列表中使用表单控件存在一些语义问题。但最简单的方法是找到您的解决方案,将每个<label><input>组合包装在一个<div>then 位置<div>。使用 as table 是一种非常古老的方法。

CSS

form div.left {
 width: 20%;
 float: left;
 display: inline;
 }
form div.right {
 width: 20%;
 float: right;
 display: inline;
 }

HTML

<form>
<div class="left"><label for="one">Label one</label><br>
<input id="one"></div>
<div class="right"><label for="two">Label two</label><br>
<input id="two"></div>

如果您不想使用<br>like 包装<label><input>在跨度中并定位它,您可能会觉得很有趣。你能扩展问题3吗?

于 2012-06-21T13:09:27.247 回答
1

我认为这就是你想要的:

fieldset { 
    height: 330px; 
    width: 580px;
}

label { 
    font-family: Arial, Helvetica, sans-serif;
    font-size: 20px;
    font-weight: bold;
    color: #ECECEC;
    text-decoration: none;
    width: 100px;
    display: block;
}
input {
    width: 250px;
    height: 25px;
    color:#bababa;
    padding:5px;
    font-size: 12px;
    -moz-border-radius: 6px;
    margin-right: 15px;
}

.fl, .fd { 
    float: left; 
    margin-bottom:15px;
 }

编辑:工作示例:http: //jsfiddle.net/7hMCN/

于 2012-06-21T13:11:18.570 回答
0

问题 1 [和 2?])我添加了<br />新的行元素(您可能会让标签向左浮动或更改display:block;)。

问题 3)我使用:nth-of-type(odd)并添加了一个边距权利

小提琴示例在这里

于 2012-06-21T13:24:12.437 回答