Для этих двух решений требуется только два вложенных элемента.
Первый — относительное и абсолютное позиционирование, если содержимое статично (центрирование вручную).
.black {
position:relative;
min-height:500px;
background:rgba(0,0,0,.5);
}
.message {
position:absolute;
margin: 0 auto;
width: 180px;
top: 45%; bottom:45%; left: 0%; right: 0%;
}
https://jsfiddle.net/GlupiJas/5mv3j171/
или для гибкого дизайна — вместо точного центра содержимого используйте приведенный ниже пример:
.message {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
https://jsfiddle.net/GlupiJas/w3jnjuv0/
Вам нужно установить «min-height», если содержимое будет превышать 50% высоты окна. Вы также можете управлять этой высотой с помощью медиа-запроса для мобильных и планшетных устройств. Но только если вы играете с адаптивным дизайном.
Я думаю, вы могли бы пойти дальше и использовать простой скрипт JavaScript/JQuery для управления минимальной высотой или фиксированной высотой, если по какой-то причине это необходимо.
Во-вторых - если содержимое изменчиво, вы также можете использовать css-свойства table и table-cell с вертикальным выравниванием и выравниванием текста по центру:
/*in a wrapper*/
display:table;
а также
/*in the element inside the wrapper*/
display:table-cell;
vertical-align: middle;
text-align: center;
Отлично работает и масштабируется, часто используется в качестве адаптивного решения для веб-дизайна с макетами сетки и медиа-запросами, которые манипулируют шириной объекта.
.black {
display:table;
height:500px;
width:100%;
background:rgba(0,0,0,.5);
}
.message {
display:table-cell;
vertical-align: middle;
text-align: center;
}
https://jsfiddle.net/GlupiJas/4daf2v36/
Я предпочитаю табличное решение для точного центрирования содержимого, но в некоторых случаях относительное абсолютное позиционирование будет работать лучше, особенно если мы не хотим сохранять точную пропорцию выравнивания содержимого.
person
DevWL
schedule
01.09.2015