2010-09-08 11 views
11

Alors, je le div avec ces paramètres:Comment centrer l'image avec une taille inconnue à l'intérieur de div?

container { 
position:fixed; 
background-color: rgba(50,50,50,0.7); 
width:100%; 
height:100%; 
display:none;} 

Il contient l'image avec une taille inconnue (la taille est Dinamic et il peut être différent).

J'ai besoin d'aligner l'image verticalement et horizontalement.

S'il vous plaît, aidez

+0

Peut-être que votre CSS a une faute de frappe, mais je veux m'assurer que vous comprenez que votre sélecteur de classe doit être précédé d'un point, comme dans '.container {...}' – Robusto

+0

Bien sûr, je le sais :) mon #container n'est pas une classe, c'est un identifiant. – Oshibka404

+1

Si c'est un identifiant, alors vous devriez le précéder de #, comme vous le faites dans votre commentaire. Je dis ça comme ça. – Robusto

Répondre

25

La méthode de l'image d'arrière-plan fonctionnera, avec position de fond: centre centre, malheureusement, vous perdrez le contrôle de mise à l'échelle de l'image.

Vous pouvez définir votre image comme suit:

position:absolute; 
margin:auto; 
top:0; 
bottom:0; 
left:0; 
right:0; 

PS. Gardez à l'esprit que ce sera centré par rapport à son parent le plus proche parent.

+0

Merci! Cela fonctionne :) – Oshibka404

+0

Fonctionne pour une image, mais ne fonctionne pas pour un DIV.Semblent exiger une largeur/hauteur CSS codée en dur pour le centrer. Notez que si vous supprimez l'attribut style et ne laissez que la largeur/hauteur HTML sur la div, elle ne peut pas être centrée. Pas pour l'étiquette img. Pourquoi cette incohérence? https://jsfiddle.net/L1rk46xy/ – Triynko

+0

parfait. dynamique. –

0

Le sur la #container façon la plus simple cross-navigateur serait de définir votre image dynamique en tant que propriété de fond:

<div id="container" style="background: url(path/to/image.png) no-repeat 50% 50%"></div> 
4

Ajoutez ce qui suit:

Les deux premiers les lignes le centrent verticalement, le dernier horizontalement.

display: table-cell; 
vertical-align: middle ; 
text-align: center; 

plus d'informations peuvent être trouvées ici: http://www.w3.org/Style/Examples/007/center

0

Ce centrera verticalement et horizontalement.

#container { 
    text-align: center; 
    vertical-align: middle; 
    display: table-cell; 
} 

http://jsfiddle.net/nfBDT/

0

Je crois que la meilleure façon est de le faire:

.container img { 
    display:block; 
    margin:auto; 
} 

régler .container en fonction de votre div (pas sûr si le vôtre est une classe ou ID)

oh je ne l'ai pas lu tous de votre question.

cela semble fonctionner:

<style type="text/css"> 
.wraptocenter { 
    display: table-cell; 
    text-align: center; 
    vertical-align: middle; 
    width: ...; 
    height: ...; 
} 
.wraptocenter * { 
    vertical-align: middle; 
} 
/*\*//*/ 
.wraptocenter { 
    display: block; 
} 
.wraptocenter span { 
    display: inline-block; 
    height: 100%; 
    width: 1px; 
} 
/**/ 
</style> 
<!--[if lt IE 8]><style> 
.wraptocenter span { 
    display: inline-block; 
    height: 100%; 
} 
</style><![endif]--> 

plein crédit: http://www.brunildo.org/test/img_center.html