Я немного исследовал это и из того, что я обнаружил, у вас есть четыре варианта:
Версия 1: Родительский div с отображением в виде ячейки таблицы
Если вы не против использования display:table-cell
родительского div, вы можете использовать следующие параметры:
.area{
height: 100px;
width: 100px;
background: red;
margin:10px;
text-align: center;
display:table-cell;
vertical-align:middle;
}
Живая ДЕМО
Версия 2: Родительский div с блоком отображения и ячейкой таблицы отображения содержимого
.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;
}
Живая ДЕМО
Версия 3: родительский div с плавающей точкой и контентный div в виде ячейки таблицы отображения
.area{
background: red;
margin:10px;
text-align: center;
display:block;
float: left;
}
.content {
display:table-cell;
vertical-align:middle;
height: 100px;
width: 100px;
}
Живая ДЕМО
Версия 4: относительная позиция родительского div и абсолютная позиция содержимого
Единственная проблема, с которой я столкнулся с этой версией, заключается в том, что, похоже, вам придется создавать CSS для каждой конкретной реализации. Причина этого в том, что div содержимого должен иметь заданную высоту, которую будет заполнять ваш текст, и верхний край поля будет рассчитан из этого. Эту проблему можно увидеть в демонстрации. Вы можете заставить его работать для каждого сценария вручную, изменив% высоты вашего div содержимого и умножив его на -5, чтобы получить значение верхнего предела маржи.
.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;
}
Живая ДЕМО