【问题标题】:I Want my Label to Vertically Align With my Input Field我希望我的标签与我的输入字段垂直对齐
【发布时间】:2013-02-18 02:03:53
【问题描述】:

这是我目前的工作:

http://jsfiddle.net/2RCBQ/

<div id="main">
<form>
    <label>First Name:<input type="text" id="firstname"></label><br/>
    <label>Last Name:<input type="text" id="lastname"></label><br>
    <label>E-Mail:<input type="text" id="email"></label><br/>
    <label>Phone:<input type="text" id="phone"></label><br/>
</form>
</div>

CSS

#main {
    width:300px;

}  

#main input {
    float:right;
    display:inline;
}

#main label {
    color: #2D2D2D;
    font-size: 15px;
    width:250px;
    display: block;
}

目前,标签(左侧)有点靠近输入字段的顶部(右侧)。我想将它们垂直对齐,以便标签位于输入字段的中间。

我试过垂直对齐,但它不起作用。请帮助我尝试找出问题所在。谢谢。

【问题讨论】:

标签: html css forms input label


【解决方案1】:

我认为以下是适用于所有输入类型的唯一方法。

label { display: flex; align-items: center; }
input { margin: 0; padding: 0; }
<label><input type="checkbox">&nbsp; HTML</label>
<label><input type="radio">&nbsp; JS</label>
<label>CSS &nbsp;<input type="text"></label>
<label>Framework &nbsp;
  <select><option selected>none</option></select>
</label>

我放了&amp;nbsp;,因为它似乎是对齐不同输入类型的最简单方法;但是,边距工作得很好。

【讨论】:

    【解决方案2】:

    您可以使用 flexbox css 进行垂直对齐。

    只需包裹父元素display-flex

    .display-flex {
        display: flex;
        align-items: center;
    }
    

    【讨论】:

    • Flex 是现代的方式。
    【解决方案3】:

    您可以将&lt;label&gt; 元素包含在一个跨度中,并将该跨度的vertical-align 设置为middle

    HTML

    <div id="main">
        <form> <span><label>First Name:<input type="text" id="firstname" /></label></span>
            <br/> <span><label>Last Name:<input type="text" id="lastname" /></label></span>
            <br/> <span><label>E-Mail:<input type="text" id="email" /></label></span>
            <br/> <span><label>Phone:<input type="text" id="phone" /></label></span>
            <br/>
        </form>
    </div>
    

    CSS

    #main {
        width:300px;
    }
    #main input {
        float:right;
        display:inline;
    }
    #main label {
        color: #2D2D2D;
        font-size: 15px;
    }
    #main span {
        display: table-cell;
        vertical-align: middle;
        width:250px;
    }
    

    http://jsfiddle.net/2RCBQ/2/

    【讨论】:

      【解决方案4】:

      html:

      我在你的标签中添加了 span,这样我们就可以为文本标签添加特定的样式:

      <div id="main">
          <form>
              <label><span>First Name:</span><input type="text" id="firstname"></label><br/>
              <label><span>Last Name:</span><input type="text" id="lastname"></label><br>
              <label><span>E-Mail:</span><input type="text" id="email"></label><br/>
              <label><span>Phone:</span><input type="text" id="phone"></label><br/>
          </form>
      </div>
      

      css:

      #main label span {
          position:relative;
          top:2px;
      }
      

      demo

      【讨论】:

        【解决方案5】:

        感觉嵌套&lt;span&gt;会增加很多不必要的标记。

        display: inline-block&lt;label&gt;&lt;input&gt;float: right 一样彼此相邻,但不会中断文档流。此外,如果您(或用户的屏幕阅读器)想要更改 font-size,它更加灵活并且允许对对齐进行更多控制。

        编辑:jsfiddle

        label, input {
            display: inline-block;
            vertical-align: baseline;
            width: 125px;
        }
        
        label {
            color: #2D2D2D;
            font-size: 15px;
        }
        
        form, input {
            box-sizing: border-box;
            -moz-box-sizing: border-box;
            -webkit-box-sizing: border-box;
        }
        
        form {
            width: 300px;
        }
        <form>
            <label for="firstname">First Name:</label><input type="text" id="firstname">
            <label for="lastname">Last Name:</label><input type="text" id="lastname">
            <label for="email">E-Mail:</label><input type="text" id="email">
            <label for="phone">Phone:</label><input type="text" id="phone">
        </form>

        【讨论】:

          猜你喜欢
          • 2012-01-23
          • 2016-10-08
          • 1970-01-01
          • 1970-01-01
          • 2011-11-16
          • 2022-01-25
          • 1970-01-01
          • 2015-06-16
          • 2012-04-23
          相关资源
          最近更新 更多