Ці два рішення потребують лише двох вкладених елементів.
Перший - відносне та абсолютне позиціонування, якщо вміст статичний (ручний центр).
.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/
Вам потрібно встановити "мінімальну висоту", якщо вміст перевищить 50% від висоти вікна. Ви також можете маніпулювати цією висотою за допомогою медіа-запиту для мобільних пристроїв та планшетних пристроїв. Але тільки якщо ви граєте з чуйним дизайном.
Я думаю, ви можете піти далі і використовувати простий скрипт JavaScript / JQuery для маніпулювання міні-висотою або фіксованою висотою, якщо є необхідність з якихось причин.
По-друге - якщо вміст є текучим u, ви також можете використовувати властивості css таблиці та комірки таблиці з вертикальним вирівнюванням та центром вирівнювання тексту:
/*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/
Я віддаю перевагу табличному рішенню для точного центрування контенту, але в деяких випадках відносне абсолютне позиціонування зробить кращу роботу, особливо якщо ми не хочемо зберігати точну пропорцію контенту.