Выровнять по вертикали с помощью CSS 3
С CSS 3 есть ли способ вертикального выравнивания элемента блока? У вас есть пример?
Спасибо.
Ответы
Ответ 1
Недавно смотрел эту проблему и пытался:
HTML:
<body>
<div id="my-div"></div>
</body>
CSS:
#my-div {
position: absolute;
height: 100px;
width: 100px;
left: 50%;
top: 50%;
background: red;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
}
Здесь Fiddle:
http://jsfiddle.net/sTcp9/6/
Он работает даже при использовании "width/height: auto", вместо фиксированных измерений.
Протестировано в последних версиях Firefox, Chrome и IE (* gasp *).
Ответ 2
Примечание. В этом примере используется черновик версии модуля Flexible Box Layout Module. Он был заменен несовместимой современной спецификацией.
Центрируйте дочерние элементы поля div с помощью свойств box-align и box-pack вместе.
Пример:
div
{
width:350px;
height:100px;
border:1px solid black;
/* Internet Explorer 10 */
display:-ms-flexbox;
-ms-flex-pack:center;
-ms-flex-align:center;
/* Firefox */
display:-moz-box;
-moz-box-pack:center;
-moz-box-align:center;
/* Safari, Opera, and Chrome */
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;
/* W3C */
display:box;
box-pack:center;
box-align:center;
}
Ответ 3
Использование Flexbox:
.container {
display: flex;
/* Vertical align: */
align-items: center;
/* Horizontal align: */
justify-content: center;
}
jsFiddle: http://jsfiddle.net/maars/8Uyvf
Поддержка браузера: http://caniuse.com/flexbox (для некоторых браузеров требуется префикс)
Ответ 4
несколько способов:
1. Абсолютное позиционирование - для выполнения этой работы вам необходимо указать высоту объявления:
<div>
<div class='center'>Hey</div>
</div>
div {height: 100%; width: 100%; position: relative}
div.center {
width: 100px;
height: 100px;
top: 50%;
margin-top: -50px;
}
* 2. Использовать display: table http://jsfiddle.net/B7CpL/2/ *
<div>
<img src="/img.png" />
<div class="text">text centered with image</div>
</div>
div {
display: table;
vertical-align: middle
}
div img,
div.text {
display: table-cell;
vertical-align: middle
}
- Более подробное руководство по использованию display: table
http://css-tricks.com/vertically-center-multi-lined-text/
Ответ 5
Существует простой способ выровнять по вертикали и по горизонтали div в css.
Просто поместите высоту в свой div и примените этот стиль
.hv-center {
margin: auto;
position: absolute;
top: 0; left: 0; bottom: 0; right: 0;
}
Надеюсь, что это помогло.
Ответ 6
Я всегда использую учебник из в этой статье, чтобы сосредоточиться на вещах. Это здорово
div.container3 {
height: 10em;
position: relative } /* 1 */
div.container3 p {
margin: 0;
position: absolute; /* 2 */
top: 50%; /* 3 */
transform: translate(0, -50%) } /* 4 */
Основные правила:
- Сделайте контейнер относительно позиционированным, который объявит его контейнером для абсолютно позиционированных элементов.
- Сделать элемент абсолютно неподвижным.
- Поместите его на полпути вниз по контейнеру "сверху: 50%". (Обратите внимание, что 50% здесь означает 50% высоты контейнера.)
- Используйте перевод, чтобы переместить элемент на половину своей высоты. ( "50%" в "translate (0, -50%)" относится к высоте самого элемента.)
Ответ 7
Попробуйте это также отлично:
HTML:
<body>
<div id="my-div"></div>
</body>
CSS
#my-div {
position: absolute;
height: 100px;
width: 100px;
left: 50%;
top: 50%;
background: red;
display: table-cell;
vertical-align: middle
}
Ответ 8
Вы можете вертикально выровнять, установив элемент для отображения: встроенный блок, затем установив вертикальное выравнивание: среднее;