将HTML输入字段对齐:

时间:2012-06-03 07:31:06

标签: html css html5 user-interface alignment

我有一个HTML表单,如:

 <html>
  Name:<input type="text"/></br>
  Email Address:<input type="text"/></br>
  Description of the input value:<input type="text"/></br>
 </html>

现在标签都在同一列中开始,但文本框根据标签的文本长度以不同的位置开始。

有没有办法对齐输入字段,使得所有“:”和文本框将从相同位置开始,前面的文本将右对齐,直到“:”?

如果可以帮助实现这一点,我可以使用CSS。

7 个答案:

答案 0 :(得分:91)

Working JS Fiddle

<强> HTML:

  <div>
      <label>Name:</label><input type="text">
      <label>Email Address:</label><input type = "text">
      <label>Description of the input value:</label><input type="text">
  </div>

<强> CSS:

label{
    display: inline-block;
    float: left;
    clear: left;
    width: 250px;
    text-align: right;
}
input {
  display: inline-block;
  float: left;
}

答案 1 :(得分:17)

您可以使用标签(请参阅JsFiddle

<强> CSS

label { display: inline-block; width: 210px; text-align: right; }

<强> HTML

<html> 
    <label for="name">Name:</label><input id="name" type="text"><br />
    <label for="email">Email Address:</label><input id="email" type="text"><br /> 
    <label for="desc">Description of the input value:</label><input id="desc" type="text"><br /> 
 </html> 

或者您可以在表格中使用这些标签(JsFiddle

<html>
    <table>
        <tbody>
            <tr><td><label for="name">Name:</label></td><td><input id="name" type="text"></td></tr>
            <tr><td><label for="email">Email Address:</label></td><td><input id="email" type = "text"></td></tr>
            <tr><td><label for="desc">Description of the input value:</label></td><td><input id="desc" type="text"></td></tr>
        </tbody>
    </table>
 </html> 

答案 2 :(得分:3)

在表单元素上设置一个宽度(在示例中应该存在!)并浮动(并清除)输入元素。另外,删除br元素。

答案 3 :(得分:2)

在我的情况下,我总是将这些东西放在像

这样的p标签中

<p> name : < input type=text /> </p>

依此类推,然后应用css,如

p {
  text-align:left;
}

p input {
  float:right;
}

你需要指定p标签的宽度。因为输入标签会一直浮动。

此css也会影响提交按钮。您需要覆盖此标记的规则。

答案 4 :(得分:1)

我知道之前已经采用过这种方法,但我相信使用表格可以轻松生成布局,虽然可能不是最佳做法。

JSFiddle

HTML

<table>

    <tr><td>Name:</td><td><input type="text"/></td></tr>

    <tr><td>Age:</td><td><input type="text"/></td></tr>

</table>

<!--You can add the fields as you want-->

CSS

td{
    text-align:right;
}

答案 5 :(得分:1)

http://jsfiddle.net/T6zhj/1/

使用display table-cell / row可以完成任务,无需任何宽度。

html:

 <html>
  <div>
      <div class="row"><label>Name:</label><input type="text"></div>
      <div class="row"><label>Email Address:</label><input type = "text"></div>
      <div class="row"><label>Description of the input value:</label><input type="text"></div>
  </div>
 </html>

Css:

label{
    display: table-cell;
    text-align: right;
}
input {
  display: table-cell;
}
div.row{
    display:table-row;
}

答案 6 :(得分:1)

我刚给Label指定了宽度,输入类型自动对齐。

input[type="text"] {
    width:100px;
	height:30px;
	border-radius:5px;
	background-color: lightblue;
	margin-left:2px;
  position:relative;
}

label{
position:relative;
width:300px;
border:2px dotted black;
margin:20px;
padding:5px;
font-family:AR CENA;
font-size:20px;

}
<label>First Name:</label><input type="text" name="fname"><br>
<label>Last Name:</label><input type="text" name="lname"><br>