2013-04-26 24 views
11

Ho un elemento posizionato in modo assoluto con contenuto all'interno. Può essere un <h1> o qualche tag <p>. Quindi non conosco l'altezza del contenuto.Contenuto centrale in un div di posizione assoluta

In che modo posso concentrare verticalmente il contenuto all'interno del div posizionato in modo assoluto?

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

risposta

11

se si aggiunge display:table al #absolute div si dovrebbe ottenere ciò che si vuole:

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

+0

Questo non centra il contenuto .. rende solo il contenuto * * iniziare dal centro –

+0

@ExplosionPills sembra centrare il contenuto per me - provare ad aggiungere più contenuti e si lo vedrà rimanere allineato verticalmente, non partire dal centro. Potresti pensare che inizi nel centro in quanto l'h1 avrà il riempimento superiore naturale che lo spinge verso il basso – Pete

2

Basta fare il div relative alla sua absolute genitore e utilizzare text-align: center, in questo modo:

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

Vedi example fiddle

1

uso text-align: center o di sinistra: il 50%

1

Questo può essere fatto con FlexBox troppo:

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

orizzontale e verticale posizione centrale assoluta.

.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>

Problemi correlati