2011-12-07 14 views
6

Nuovo per CSS.CSS - Come centrare le div annidate?

Sto cercando di centrare div annidati usando il codice seguente

HTML

<html> 
    <head> 
     <title>My website</title> 
     <link rel="stylesheet" type="text/css" href="css/main.css" /> 
    </head> 
    <body> 
     <div id="wrapper"> 
      <div id="formpanel"> 
       <div id="loginForm"> 
       </div> 
      </div> 
     </div> 
    </body> 
</html> 

CSS

body { 
    margin: 0; 
    background : #90ADB7 url('images/background.png') repeat-x; 
    font-family: verdana, sans-serif; 
    font-size: 0.85em; 

} 

#wrapper { 
    width: 960px; 
    margin: 0 auto; 
    border-style:solid; 
    padding: 190px 0; 
} 

#formpanel { 
    width: 400px; 
    height: 400px; 
    background-color: yellow; 
    margin: auto; 
} 

#loginForm { 
    margin: auto; 
    width: 50%; 
    height: 50%; 
    background-color:blue; 
} 

il problema è che il div più interno (#loginForm) si svuota con il bordo superiore del div esterno (#formpanel). Come dovrei centrare il div interno?

Schermata enter image description here

+0

Dal @ di BillyMoon risposta dal 2011 è nella coda di eliminazione, ecco il link che originariamente pubblicato: http://www.jakpsatweb.cz/css/css-vertical-center-solution.html – royhowie

risposta

5

Si potrebbe utilizzare il posizionamento relativo:

http://jsfiddle.net/a879W/

+0

Grazie. Questo funziona. Grazie anche per jsfiddle. Non conoscevo questo strumento. – Rahul

+0

per i posteri: #loginForm { margine: auto; posizione: relativa; superiore: 25%; larghezza: 50%; altezza: 50%; colore di sfondo: blu; } – Rahul

2
#formpanel { 
    position: relative; 
    ... 
} 

#loginForm { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    margin-top: -100px; 
    margin-left: -100px; 
    width: 200px; 
    height: 200px; 
    background-color:blue; 
} 
1
#loginForm { 
    position:absolute; 
    top:25%; 
    margin: auto; 
    width: 50%; 
    height: 50%; 
    background-color:blue; 
} 

EDIT: top: 25 non% al 50%.

+1

penso che dovrebbe essere superiore: 25% ... – ptriek

+0

Bello, mi sono perso. Grazie. – Jivings

+0

@Jivings, questo non funziona. sei sicuro della posizione: assoluta? – Rahul

0

È possibile utilizzare il posizionamento assoluto:

#formpanel { 
    width: 400px; 
    height: 400px; 
    background-color: yellow; 
    margin: auto; 
    position:relative; 
} 

#loginForm { 
    position: absolute; 
    width: 200px; 
    height:200px; 
    left: 100px; 
    top: 100px; 
    background-color:blue; 
} 
+0

E se la finestra viene ridimensionata? Il posizionamento assoluto non è utile per i componenti di centraggio. – Jivings

+0

Presumo, dal momento che il div del wrapper ha una larghezza fissa, non ci dovrebbe essere alcuna necessità di ridimensionare la finestra ... –

Problemi correlati