2010-03-23 16 views
6

Voglio centrare una div destra nel mezzo della pagina, ho provato top:30%, ma quando la finestra viene ridimensionata dall'allineamento.center a div box nel mezzo della pagina utilizzando css

<div id=cent></div> 

Grazie Jean

+2

Questo tipo di domanda richiede un codice di esempio se qualcuno cerca di rispondere ... Senza alcuna idea su come il div è posizionato all'interno dei suoi elementi genitori e fratelli, non c'è modo di capire il tuo problema .. evviva ..! – SpikETidE

+0

È solo un semplice div no genitore o figlio – X10nD

risposta

0
<div id="content" 
       style="text-align: center; 
       vertical-align: middle; 
       border-color: #000000; 
       border-width: 1px; 
       border-style: solid; 
       margin-top: 25%; 
       margin-bottom: 25%;"> 
       hi 
      </div> 

Questo ha funzionato per me ...

Edit: Questo allineerà l'intero div ... a prescindere dalle dimensioni del div o la pagina. .. Supponendo che questo ID sia l'unico div in tutta la pagina ...

+0

Ho solo bisogno di allineare il div non il testo – X10nD

14

Se si conosce l'altezza/larghezza di quel div (ad esempio, sarà 100 x X 200 px), allora è possibile farlo in questo modo:

#cent { 
    position:absolute; 
    top:50%; 
    left:50%; 
    margin-top:-50px; /* this is half the height of your div*/ 
    margin-left:-100px; /*this is half of width of your div*/ 
} 

UPDATE: un'altra opzione: vedi http://www.w3.org/Style/Examples/007/center (centratura verticale)

+0

Indipendentemente dalla dimensione del div, deve essere allineato – X10nD

+0

Inoltre, vedere il collegamento nella mia risposta aggiornata – naivists

+0

+1 per il link ... display: table-cell era qualcosa di nuovo per me ....! – SpikETidE

1

Aggiunta di note al collegamento naivists' (W3C sito punte): display:table-cell non funziona con height:100%. Pertanto, se si desidera centrare verticalmente un elemento, di cui non si conosce l'altezza, su una pagina, è necessario inserirlo in un contenitore con display:table e height:100% e un altro contenitore con display:table-cell e vertical-align:middle.

Inoltre, se si desidera centrarlo orizzontalmente, è necessario specificare width:100% sul corpo, sul contenitore esterno e dare text-align:center al contenitore interno. Il contenuto dovrebbe avere display:inline-block e per ripristinare l'allineamento, text-align:left.

In ultima analisi, diventa come segue:

<style> 
#vcontainer { 
    display: table; 
    height: 100%; 
    width: 100%; 
} 
#hcontainer { 
    display: table-cell; 
    vertical-align: middle; 
    text-align: center; 
} 
#content { 
    display: inline-block; 
    border: lightGray 1px solid; 
    background-color: lightBlue; 
    text-align: left; 
} 
</style> 
<body> 
    <div id="vcontainer"><div id="hcontainer"> 
    <div id="content"> 
     Hoyjo!<br> 
     I have returned to my hometown!<br> 
     Lolololo lololo lololo lololo lololo!<br> 
    </div> 
    </div></div> 
</body> 

Non posso garantire che funzionerà sul browser legacy (IE6/7). Funzionerà su IE8 a condizione che funzioni sugli standard IE8 (sì, questo ti farà impazzire. Grazie, MS!), E devi dare <html> e <body> il height:100%.

0

Ecco come:

#cent 
{ 
    margin-left:50px; 
    margin-right:50px; 
} 

Ora il vostro div sta per essere 50px da sinistra e destra e centrato in qualunque contenitore lo avete in

-2
position: absolute; 
top: 0; 
right: 0; 
bottom: 0; 
left: 0; 
margin: auto; 
1

HTML:.

<div id="box"></div> 

CSS:

#box{ 
background-color: green; 
width:100px; 
height:100px; 
margin:auto; /*you only need this part to center*/ 
} 

Whatch fuori dalle virgolette o doppie virgolette intorno al "box" di identificazione, ne hai bisogno.

Problemi correlati