使用从左到右彼此相邻的输入字段布局所有分隔符,然后在输入字段的顶部显示标签

时间:2012-05-16 06:52:43

标签: html css

我一直在搞乱css,但我无法得到我想要的布局.. 我想让所有输入字段垂直对齐,但重要的是我仍然保留分隔符(因为我在它们上使用javascript) 我一直在玩不同的位置和浮动设置,我似乎无法让它工作......

如果有人有一个很好的解决方案可以使它全部垂直对齐(标签直接在输入字段的顶部)我会非常感激

这是我凌乱的代码:

http://jsfiddle.net/hYa9a/4/

2 个答案:

答案 0 :(得分:2)

Nightfirecat的建议的另一种选择,如果计划是将标签放在文本框上方,那么这可能会起到作用:

BTW:我认为jsfiddle.net/hYa9a/4/代码中存在拼写错误。在密码字段中,其中一个ID作为usernameIn输入。这应该是密码吗?

<style>
#optionsBar{ /*same as login*/}
.placeholder {
    background-color: #fff;
    outline: none;
    font-family: "Times New Roman", Times, serif;
    font-size: 12px;
    text-indent: 0;
    /*box-shadow: 0 1px 1px rgba(0, 0, 0, 0.07) inset, 0 0 8px rgba(82, 168, 236, 0.6); */
    -moz-border-radius: 2px;
    border-radius: 2px;
}
/*same as login*/
.selectInput {
    border: 1px solid #8BAAFE;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.07) inset, 0 0 5px rgba(33, 93, 253, 0.6);
}    

#smLogin{
position:relative;
float:right;
width:100%;
height:30px;
}

#usernameIn{
    position: relative;
    float: left;
    width:150px;
    margin-left:-150px;
    margin-top:20px;
}
#passwordIn{
    position: relative;
    float: left;
    width:150px;
    margin-left:-150px;
    margin-top:20px;
}
#username{
    width:150px;
    position: relative;
    float: left;
}
#password{
    position: relative;
    float: left;
    width:150px;
}
#firstInput{
    position: relative;
    float: left;
}
#secondInput{
position: relative;
    float: left;
}
​</style>

<div id="optionsBar">
<div id="smLogin">
<form name="smLoginForm">

<div id="username" >
<label id="usernameLb"  for="username">Username</label>
</div>
<div id="usernameIn" class="inputs">
 <input id="firstInput" name="username"  class="placeholder controlInput"   type="text" size="20" value="">
</div>

<div id="password" >
 <label id="passwordLb" for="password">Password</label>
</div>
<div id="passwordIn" class="inputs">
 <input id="secondInput" name="password" class="placeholder controlInput" type="password" size="20" value="">
</div>

</form>
</div>
</div>​




注意:如果有一个选项来修改HTML代码而不仅仅是CSS,我建议将表单标签和文本框放在包装器div中。类似的东西:

<div class="formobject">
<div id="username" >
<label id="usernameLb"  for="username">Username</label>
</div>
<div id="usernameIn" class="inputs">
 <input id="firstInput" name="username"  class="placeholder controlInput"   type="text" size="20" value="">
</div>
</div>

然后你可以通过删除单个标签和文本框上的所有样式来清理CSS,并设置宽度并浮动到只有formobject div。像:

<style>
.formobject{
    float: left;
    width:150px;
}
</style>

答案 1 :(得分:1)

如果您的意思是将标签直接放在字段的顶部(如覆盖在字段上),我建议您使用position: absolute;以及将z-index: -1;应用于标签,并{{1} }到文本字段as utilized in this JSFiddle