2013-04-26 3 views
11

У меня есть элемент с абсолютным расположением с содержимым внутри. Это может быть <h1> или несколько тегов <p>. Поэтому я не знаю высоту контента.Содержание центра в абсолютном положении div

Как я могу вертикально центрировать содержимое внутри абсолютно расположенного div?

HTML:

<div id="absolute"> 
    <div class="centerd"> 
    <h1>helo</h1> 
    <span>hi again</span> 
    </div> 
</div> 

CSS:

#absolute { 
    position:absolute; 
    top:10px; 
    left:10px; 
    width:50%; 
    height:50%; 
    background:yellow; 
} 

.centerd { 
    display:table-cell; 
    vertical-align:middle; 
} 

Fiddle

ответ

11

если добавить display:table к вашему #absolute ДИВ вы должны получить то, что вы хотите:

http://jsfiddle.net/3KTUM/2/

+0

Это не центр содержания .. это просто делает содержание * начать * от центра –

+0

@ExplosionPills КАЖЕТСЯ центрировать содержимое для меня - попробуйте добавить больше контента, и вы будет видеть, что он остается вертикально выровненным, а не начинается с центра. Вы можете подумать, что он начинается в центре, так как h1 будет иметь естественное верхнее дополнение, которое отталкивает его – Pete

2

Просто сделать DIV relative его absolute родителя и использовать text-align: center, как это:

.centerd { 
    position: relative; 
    width: 100%; 
    text-align: center; 
    /*display:table-cell; 
    vertical-align:middle;*/ 
} 

См example fiddle

1

использование выравнивания текста: центр или влево: 50%

1

Это может быть сделано с Flexbox тоже:

#absolute { 
    align-items: center; 
    display: flex; 
    justify-content: center; 
} 
0

Горизонтальное и вертикальное положение абсолютного среднего.

.center { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50% , -50%); 
 
    -webkit-transform: translate(-50%, -50%); 
 
}
<div class="obj"> 
 
    <div class="center">Test</div> 
 
</div>

Смежные вопросы