Если это одна строка текста и / или изображения, то это легко сделать.Просто используйте:
text-align: center;
vertical-align: middle;
line-height: 90px; /* The same as your div height */
Вот и все.Если это может быть несколько строк, то это несколько сложнее.Но есть решения на http://pmob.co.uk/. Ищите «вертикальное выравнивание».
Так как они, как правило, являются хаки или добавления сложных div-ов ... Я обычно использую таблицу с одной ячейкой, чтобы сделать это.... чтобы сделать его максимально простым.
Обновление для 2016/2017:
Чаще всего это можно сделать с помощью transform
, и оно хорошо работает даже в старых браузерахнапример, Internet Explorer 10 и Internet Explorer 11. Он может поддерживать несколько строк текста:
position: relative;
top: 50%;
transform: translateY(-50%);
Пример: https://jsfiddle.net/wb8u02kL/1/
Чтобы уменьшить ширину:
В приведенном выше решении используется фиксированная ширина области содержимого.Чтобы использовать ширину в термоусадочную пленку, используйте
position: relative;
float: left;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
Пример: https://jsfiddle.net/wb8u02kL/2/
Я пробовал flexbox, но он не был так широко распространен, как в некоторых старых версияхInternet Explorer, например Internet Explorer 10.