2011-09-20 3 views
1

Je me rends compte qu'il y a beaucoup d'exemples là-bas, et je travaille à partir d'un, mais n'arrive pas à le faire fonctionner correctement.div verticalement

Voici ce que j'ai actuellement:

<div id="w"> 
    <div id="iw"> 
     <a href="#"> 
      <img src="http://stackoverflow.com/content/stackoverflow/img/apple-touch-icon.png" /> 
     </a> 
    </div> 
</div> 

Et:

body { 
    width:100%; 
    margin:0; 
    padding:0; 
} 
#w { 
    display:table; 
    width: 100%; 
} 
#iw { 
    display:table-cell; 
    text-align:center; 
    vertical-align:middle; 
} 
#iw a img { 
    -moz-box-shadow:0 1em 1em #444; 
    -webkit-box-shadow:0 1em 1em #444; 
    -o-box-shadow:0 1em 1em #444; 
    box-shadow:0 1em 1em #444; 
    -moz-border-radius:10px; 
    -webkit-border-radius:10px; 
    -o-border-radius:10px; 
    border-radius: 10px; 
} 

(http://jsfiddle.net/rlemon/zjWaz/)

Fondamentalement, je veux centrer verticalement et horizontalement le récipient iw.

L'idée que j'avais lue à propos du conteneur d'emballage est display: table; et le contenu interne est display: table-cell; et vous pouvez ensuite utiliser l'alignement vertical de la table. Génial, maintenant comment faire de la table 100% de la hauteur de la page? le mieux que je peux faire est une hauteur fixe, qui (sans l'utilisation de JS) ne m'aidera pas à être exactement centré verticalement.

+0

S'il vous plaît ne pas ** juste ** poster un lien violon à votre code; toujours l'inclure * dans * la question. – Matt

+0

merci Matt. – rlemon

Répondre

5

Essayez la place CSS suivante:

html,body { 
    width:100%; 
    height:100%; 
    margin:0; 
    padding:0; 
    border:1px solid #000; 
} 
#w { 
    display:table; 
    height:100%; 
    width: 100%; 
} 
#iw { 
    display:table-cell; 
    text-align:center; 
    height:100%; 
    width:100%; 
    vertical-align:middle; 
} 
#iw a img { 
    -moz-box-shadow:0 1em 1em #444; 
    -webkit-box-shadow:0 1em 1em #444; 
    -o-box-shadow:0 1em 1em #444; 
    box-shadow:0 1em 1em #444; 
    -moz-border-radius:10px; 
    -webkit-border-radius:10px; 
    -o-border-radius:10px; 
    border-radius: 10px; 
} 

Voir ceci dans un violon mise à jour: http://jsfiddle.net/zjWaz/1/

+0

Battez-moi. Lorsque vous utilisez cette technique pour centrer des éléments verticalement, la hauteur: 100% doit être appliquée à tous les éléments contenant. Way to go, Ujjwal! +1 –

+0

les choses importantes à noter ici sont: Après le test; la propriété height n'est pas nécessaire pour l'élément 'iw'. Les cellules de table remplissent/supposent la hauteur et la largeur de leur table parente. Et j'appliquais aussi seulement les propriétés 'height/width' au' body' et pas 'html' *** (ce qui est la clé) *** +1 check. – rlemon

1

si vous connaissez la largeur et la hauteur plus facile serait de iw position absolue, supérieure: 50%; gauche: 50% et régler la hauteur marge de la moitié négative et la largeur (permet de dire que la largeur/hauteur sont 200px cette façon margin: -100px 0 0 -100px)

1

Cocher cette Css

body { 
width:100%; 
margin:0; 
padding:0; 
} 
#w { 
display:table; 
width: 100%; 
} 
#iw { 
width:100%; 
height:100%; 
position:absolute; 
left:50%; 
top:50%; 
margin-left:-100px; 
margin-top:-50px; 
} 
#iw a img { 
-moz-box-shadow:0 1em 1em #444; 
-webkit-box-shadow:0 1em 1em #444; 
-o-box-shadow:0 1em 1em #444; 
box-shadow:0 1em 1em #444; 
-moz-border-radius:10px; 
-webkit-border-radius:10px; 
-o-border-radius:10px; 
border-radius: 10px; 
} 

Mise à jour Fiddle Jetez également. http://jsfiddle.net/zjWaz/4/

J'espère que vous aurez votre réponse.