2010-12-27 4 views
2

Je veux placer un <div>Positionnement CSS avancé. Center & Middle

  • Pour Centre avec le corps WRT largeur
  • du Milieu avec la hauteur du corps wrt

Le div aura ces propriétés:

  • largeur de div sera 90%
  • hauteur de div auto, min. sera connu
+0

Vous pouvez utiliser la marge (gauche, droite) 5% pour imiter l'effet de la largeur de centrage. –

+0

c'est le positionnement vertical qui est le problème – Moon

Répondre

4

J'ai testé cela dans IE8, Firefox, Chrome. Cela ne fonctionne pas dans IE7.

Si vous avez besoin que cela fonctionne dans < = IE7, j'imagine que la solution la plus simple serait d'abandonner le CSS pur et d'utiliser javascript pour le positionnement vertical.

Live Demo

HTML:

<div id="container"> 
    <div id="content"> 
     <input type="button" value="click me" onclick="javascript:document.getElementById('content').innerHTML += 'i i i i i i i i i i i i i i i i i i i i i i i i i<br />';" /><br /> 
     i i i i i i i i i i i i i i i i i i i i i i i i i<br /> 
     i i i i i i i i i i i i i i i i i i i i i i i i i<br /> 
     i i i i i i i i i i i i i i i i i i i i i i i i i<br /> 
     i i i i i i i i i i i i i i i i i i i i i i i i i<br /> 
    </div> 
</div> 

CSS:

html, body { 
margin: 0; 
padding: 0; 
border: 0; 

width: 100%; 
height: 100% 
} 

body { 
display: table 
} 

#container { 
width: 100%; 
display: table-cell; 
vertical-align: middle 
} 

#content { 
background: red; 
width: 90%; 
margin: 0 auto; 
min-height: 150px 
} 
+2

Chaque fois que je vois 'display: table' et consorts en CSS, j'ai des sentiments mitigés et je me demande toujours:" Pourquoi ne pas simplement utiliser un '

' au lieu de tout ce gâchis? ". Jusqu'où iriez-vous avec * divitis *? – BalusC

+0

Qu'est-ce qu'un '

'? :) – thirtydot

0

Vous pouvez utiliser la marge (gauche, droite) 5% pour imiter l'effet de la largeur de centrage. A propos du centrage de la hauteur, je ne connais pas la façon dont vous pouvez le faire avec css seul (en raison de la taille verticale inconnue). Mais vous pouvez essayer d'utiliser javascript pour le faire.

Voici un exemple: http://www.demtron.com/blog/post/2009/01/14/Centering-a-DIV-Window-with-Cross-Browser-JavaScript.aspx (vous pouvez ignorer la partie de taille de fenêtre de détection).

+0

Désolé, il semble que cette approche ne fonctionne pas pour votre problème. –

3

Vous pouvez centrer la hauteur like this (attention à la compatibilité avec les navigateurs). Pour la largeur de centrage: vous pouvez utiliser position: absolute; et left: 50%;, et margin: -num;. Dans la marge, remplacez num avec la moitié de la largeur de la div.

1

Régler la div avec cela. Je crois que cela ne fonctionne pas dans IE 7 et moins. Terrible IE ....

marge: auto; haut: 0, droite: 0, gauche: 0, bas: 0; position: absolue;

+0

fonctionne sur .. les images ont une largeur et une hauteur.sinon, les deux options doivent être ajoutées au style pour fonctionner par exemple. divs – BananaAcid