Trochę to zbadałem iz tego, co znalazłem, masz cztery opcje:
Wersja 1: nadrzędny element DIV z wyświetlaniem jako komórka tabeli
Jeśli nie masz nic przeciwko używaniu display:table-cell
nadrzędnego elementu DIV, możesz skorzystać z następujących opcji:
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:table-cell;
vertical-align:middle;
}
DEMO na żywo
Wersja 2: nadrzędny element DIV z blokiem wyświetlania i komórką tabeli wyświetlającej zawartość
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:block;
}
.content {
height: 100px;
width: 100px;
display:table-cell;
vertical-align:middle;
}
DEMO na żywo
Wersja 3: pływający element DIV nadrzędny i element DIV zawartości jako wyświetlana komórka tabeli
.area{
background: red;
margin:10px;
text-align: center;
display:block;
float: left;
}
.content {
display:table-cell;
vertical-align:middle;
height: 100px;
width: 100px;
}
DEMO na żywo
Wersja 4: nadrzędna pozycja DIV względna z bezwzględną pozycją treści
Jedynym problemem, jaki miałem z tą wersją, jest to, że wydaje się, że będziesz musiał utworzyć css dla każdej konkretnej implementacji. Powodem tego jest to, że element div zawartości musi mieć ustawioną wysokość, którą wypełni twój tekst, i na tej podstawie zostanie obliczony górny margines. Ten problem można zobaczyć w demo. Możesz sprawić, by działał ręcznie dla każdego scenariusza, zmieniając% wysokości elementu div zawartości i mnożąc go przez -,5, aby uzyskać wartość górną marginesu.
.area{
position:relative;
display:block;
height:100px;
width:100px;
border:1px solid black;
background:red;
margin:10px;
}
.content {
position:absolute;
top:50%;
height:50%;
width:100px;
margin-top:-25%;
text-align:center;
}
DEMO na żywo