垂直对齐标签中的文本

Ian*_*Ian 42 html css

我被要求垂直对齐表单中字段的标签中的文本,但我不明白它们为什么不移动.我已尝试使用vertical-align:top;和其他属性使用内嵌样式bottom,middle但它不起作用.

有任何想法吗?

<dd>
   <label class="<?=$email_confirm_class;?>" 
          style="text-align:right; padding-right:3px">Confirm Email</label>
   <input class="text" type="text" 
          style="border:none;" name="email_confirm" 
          id="email_confirm" size="18" value="<?=$_POST['email_confirm'];?>" 
          tabindex="4" /> 
   *
</dd>
Run Code Online (Sandbox Code Playgroud)

Dis*_*oat 32

垂直对齐仅适用于内联内联块元素,并且仅与其他内联[-block]元素相关.因为你浮动标签,它就变成了一个元素.

在您的情况下,最简单的解决方案是将标签设置为标签和输入display: inline-block并添加vertical-align: middle到标签和输入.(您可能会发现文本的高度使得垂直对齐无论如何都不会有任何区别.)


Wab*_*son 20

你试过line-height吗?如果有多个行标签,它将无法解决您的问题,但它可以是一个快速的解决方案.


Ger*_*lov 15

您可以在2018年以后使用flexbox:

.label-class {
    display: flex;
    align-items: center;
}
Run Code Online (Sandbox Code Playgroud)

浏览器支持:https : //caniuse.com/#search=flexbox

  • @RickO'Shea 这是唯一对我有用的东西。我认为这是因为我的标签位于显示为 Flex 的输入组中。因此,尽管它可能适用于您的情况,但它确实适用于其他一些情况。 (2认同)

Guf*_*ffa 13

vertical-align样式用于表格单元格,因此这里不会为您做任何事情.

要将标签与输入框对齐,您可以使用line-height:

line-height: 25px;
Run Code Online (Sandbox Code Playgroud)

  • 它对于可变高度不起作用。 (3认同)

Pab*_*blo 7

我有一个类似的问题,并解决了它包装label成 adiv并设置以下样式:

<div style="display: table; vertical-align: middle">
  <label style="display: table-cell;" ... > ... </label>
</div>
Run Code Online (Sandbox Code Playgroud)


pei*_*rix 5

这就是我通常对标签内的文本进行“垂直对齐”的做法:

label {
   display: block;
   float: left;
   padding-top: 2px; /*This needs to be modified to fit */
}
Run Code Online (Sandbox Code Playgroud)

它不会很好地扩展,但它可以工作。


Rob*_*bri 0

为此,您应该更改输入的垂直对齐属性。

<dd><label class="<?=$email_confirm_class;?>" style="text-align:right; padding-right:3px">Confirm Email</label><input class="text" type="text" style="vertical-align: middle; border:none;" name="email_confirm" id="email_confirm" size="18" value="<?=$_POST['email_confirm'];?>" tabindex="4" /> *</dd>
Run Code Online (Sandbox Code Playgroud)

这是一个更完整的版本。它已经在 IE 8 中测试并且可以工作。通过从输入中删除 Vertical-align: middle 来查看差异:

<html><head></head><body><dl><dt>test</dt><dd><label class="test" style="text-align:right; padding-right:3px">Confirm Email</label><input class="text" type="text" style="vertical-align: middle; font-size: 22px" name="email_confirm" id="email_confirm" size="28" value="test" tabindex="4" /> *</dd></dl></body></html>
Run Code Online (Sandbox Code Playgroud)