[英]CSS: How to align vertically a “label” and “input” inside a “div”?
请考虑以下代码 :
HTML:
<div>
<label for='name'>Name:</label>
<input type='text' id='name' />
</div>
CSS:
div {
height: 50px;
border: 1px solid blue;
}
将label
和input
放在div
中间(垂直)的最简单方法是什么?
div { display: table-cell; vertical-align: middle; height: 50px; border: 1px solid red; }
<div> <label for='name'>Name:</label> <input type='text' id='name' /> </div>
这种方法的优点是你可以改变div
的高度,改变文本字段的高度和改变字体大小,一切都将保持在中间。
更现代的方法是使用css flex-box。
div { height: 50px; background: grey; display: flex; align-items: center }
<div> <label for='name'>Name:</label> <input type='text' id='name' /> </div>
一个更复杂的例子......如果你在flex流程中有多个元素,你可以使用align-self将不同的单个元素对齐到指定的对齐...
div { display: flex; align-items: center } * { margin: 10px } label { align-self: flex-start }
<div> <img src="https://de.gravatar.com/userimage/95932142/195b7f5651ad2d4662c3c0e0dccd003b.png?size=50" /> <label>Text</label> <input placeholder="Text" type="text" /> </div>
它也非常容易水平和垂直居中:
div { position:absolute; top:0;left:0;right:0;bottom:0; background: grey; display: flex; align-items: center; justify-content:center }
<div> <label for='name'>Name:</label> <input type='text' id='name' /> </div>
这适用于跨浏览器,提供更多可访问性并且标记更少。 放弃了div。 包裹标签
label{
display: block;
height: 35px;
line-height: 35px;
border: 1px solid #000;
}
input{margin-top:15px; height:20px}
<label for="name">Name: <input type="text" id="name" /></label>
我知道这个问题是在两年前提出来的,但是对于最近的观众来说,这里有一个替代解决方案,它比Marc-François的解决方案有一些优势:
div {
height: 50px;
border: 1px solid blue;
line-height: 50px;
}
这里我们只添加一个等于div高度的line-height
。 现在,您可以将优势更改div的显示属性,例如inline-block
,它的内容将保持垂直居中。 接受的解决方案要求您将div视为表格单元格。 这应该完美,跨浏览器。
唯一的另一个好处是它只是一个CSS规则而不是两个:)
干杯!
在div
( 顶部和底部 )和vertical-align:middle
label
和input
vertical-align:middle
使用padding
。
将标签包裹并输入另一个具有指定高度的div。 这可能不适用于低于8的IE版本。
position:absolute;
top:0; bottom:0; left:0; right:0;
margin:auto;
您可以使用display: table-cell
属性,如下面的代码所示:
div {
height: 100%;
display: table-cell;
vertical-align: middle;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.