Ответ 1
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>
Рассмотрим следующий код:
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>
более современный подход - использовать 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>
Это работает кросс-браузер, обеспечивает большую доступность и имеет меньшую разметку. канава 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>
Я знаю, что этот вопрос задавался более двух лет назад, но для любых последних зрителей здесь альтернативное решение, имеющее несколько преимуществ по сравнению с решением Марка-Франсуа:
div {
height: 50px;
border: 1px solid blue;
line-height: 50px;
}
Здесь мы просто добавляем только line-height
, равный высоте высоты div. Преимущество заключается в том, что теперь вы можете изменить свойство отображения div, как вы сочтете нужным, например, на inline-block
, и содержимое останется вертикально по центру. Принятое решение требует, чтобы вы рассматривали div как ячейку таблицы. Это должно работать отлично, кросс-браузер.
Единственное другое преимущество - просто еще одно правило CSS вместо двух:)
Ура!
Используйте padding
на div
(сверху и снизу) и vertical-align:middle
на label
и input
.
пример http://jsfiddle.net/VLFeV/1/
Оберните этикетку и введите другой div с определенной высотой. Это может не работать в версиях IE ниже 8.
position:absolute;
top:0; bottom:0; left:0; right:0;
margin:auto;
Вы можете использовать свойство display: table-cell
, как в следующем коде:
div {
height: 100%;
display: table-cell;
vertical-align: middle;
}