Te dwa rozwiązania wymagają tylko dwóch zagnieżdżonych elementów.
Po pierwsze - pozycjonowanie względne i bezwzględne, jeśli treść jest statyczna (wyśrodkowanie ręczne).
.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/
lub do projektowania płynnego - zamiast tego użyj poniższego przykładu dla dokładnego centrum treści:
.message {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
https://jsfiddle.net/GlupiJas/w3jnjuv0/
Musisz ustawić minimalną wysokość na wypadek, gdyby zawartość przekroczyła 50% wysokości okna. Możesz również manipulować tą wysokością za pomocą zapytania o media dla urządzeń mobilnych i tabletów. Ale tylko jeśli bawisz się responsywnym designem.
Myślę, że możesz pójść dalej i użyć prostego skryptu JavaScript / JQuery do manipulowania minimalną lub stałą wysokością, jeśli z jakiegoś powodu jest taka potrzeba.
Po drugie - jeśli zawartość jest płynna, możesz również użyć właściwości CSS tabeli i komórki tabeli z wyrównaniem w pionie i wyśrodkowaniem tekstu:
/*in a wrapper*/
display:table;
i
/*in the element inside the wrapper*/
display:table-cell;
vertical-align: middle;
text-align: center;
Doskonale działa i skaluje się, często używane jako elastyczne rozwiązanie do projektowania witryn internetowych z układami siatki i zapytaniami o media, które manipulują szerokością obiektu.
.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/
Preferuję rozwiązanie tabelaryczne do dokładnego wyśrodkowania treści, ale w niektórych przypadkach względne pozycjonowanie bezwzględne będzie lepsze, zwłaszcza jeśli nie chcemy zachować dokładnej proporcji wyrównania treści.