Этот ответ больше не лучший ответ ... см. Ниже ответ на вопрос о flexbox!
Чтобы получить идеальное центрирование (как указано в ответ Дэвида ), вам нужно добавить отрицательное верхнее поле. Если вы знаете (или принудительно), что должна быть только одна строка текста, вы можете использовать:
margin-top: -0.5em;
например:
http://jsfiddle.net/45MHk/623/
//CSS:
html, body, div {
height: 100%;
}
#parent
{
position:relative;
border: 1px solid black;
}
#child
{
position: absolute;
top: 50%;
/* adjust top up half the height of a single line */
margin-top: -0.5em;
/* force content to always be a single line */
overflow: hidden;
white-space: nowrap;
width: 100%;
text-overflow: ellipsis;
}
//HTML:
<div id="parent">
<div id="child">Text that is suppose to be centered</div>
</div>
Первоначально принятый ответ не будет центрироваться вертикально по центру текста (он центрируется по верху текста). Итак, если ваш родитель не очень высокий, он не будет выглядеть по центру, например:
http://jsfiddle.net/45MHk/
//CSS:
#parent
{
position:relative;
height: 3em;
border: 1px solid black;
}
#child
{
position: absolute;
top: 50%;
}
//HTML:
<div id="parent">
<div id="child">Text that is suppose to be centered</div>
</div>