2010-03-23 9 views
9

Je souhaite centrer une image dans une page à la fois verticalement et horizontalement, même lorsque le navigateur est redimensionné.Besoin de centrer l'image dans une page Web via CSS

Actuellement, j'utilise ce CSS:

.centeredImage { 
    position: fixed; 
    top: 50%; 
    left: 50%; 
    margin-top: -50px; 
    margin-left: -150px; 
} 

Et ce HTML:

<img class="centeredImage" src="images/logo.png"> 

Il centre dans FF mais pas IE (centre de l'image est placée dans le coin supérieur gauche). Des idées?

-Robot

+0

-vous "savez" la hauteur de l'image? – Jage

+0

Oui, bien que, évidemment, la question de crédit supplémentaire est de savoir comment le faire génériquement pour n'importe quelle image. – Robot

Répondre

5

Essayez d'utiliser ceci:

position: absolute 
+0

Cela a fait l'affaire ... maintenant à essayer de le faire fonctionner pour n'importe quelle image en ajustant dynamiquement pour la largeur et la hauteur de l'image. – Robot

+0

jquery vous aidera avec cela. – Tesserex

+0

@Tesserex Depuis quand jQuery est-il considéré CSS? –

0
text-align:center; 

vertical-align:middle; 

vertical-align

aurait dû prendre pour l'astuce

+1

Notez que l'alignement de texte doit être appliqué au conteneur, pas à l'image. Aussi vertical-aligner ne fonctionne pas pour moi, en testant avec IE7. – Tesserex

0

Si les réponses fournies ne fonctionnent pas et/ou non cohérente chaque navigateur, vous pouvez donner un coup de feu:

http://andreaslagerkvist.com/jquery/center/

text-align:center; 

devraient obtenir, cependant.

+0

Ce plugin jQuery a l'air fantastique, bien que j'utilise ExtJS, donc je dois voir si je peux le traduire. – Robot

+0

Ahh, peut-être qu'un plugin équivalent existe. Pas familier avec ExtJS. – Kevin

0

IE a des problèmes avec position: fixed (avec un million d'autres choses), donc je déconseille si la compatibilité est importante.

Utilisez position: absolute si le conteneur ne doit pas faire défiler. Sinon, vous aurez besoin de js pour ajuster le haut et le gauche de votre image lorsque vous faites défiler.

text-align: center devrait fonctionner s'il est appliqué au conteneur de l'image, mais pas à l'image elle-même. Mais bien sûr, cela ne concerne que l'horizontale, pas verticale. vertical-align: middle ne fonctionne pas pour moi, même avec un conteneur assez grand.

Les marges automatiques ne fonctionnent pas dans IE, du moins lorsque je le teste.

+0

position: travail absolu ... merci – Robot

0

Solution:

.centeredImage { 
     position: absolute; 
     top: 50%; 
     left: 50%; 
     margin-top: image-height/2; 
     margin-left: image-width/2; 
    } 

puisque vous avez mentionné:

margin-top: -50px; 
margin-left: -150px; 

Et si son alignement correctement au centre puis la hauteur de votre image serait 50x2 = 100px; & largeur 150x2 = 300px;

2

Ceci est une façon délicate, mais cela fonctionne:

CSS:

html, body, #wrapper { 
    height:100%; 
    width: 100%; 
    margin: 0; 
    padding: 0; 
    border: 0; 
} 
#wrapper td { 
    vertical-align: middle; 
    text-align: center; 
} 

HTML:

<html> 
<body> 
    <table id="wrapper"> 
     <tr> 
     <td><img src="my_cool_image.png" alt="hello world" /></td> 
     </tr> 
    </table> 
</body> 
</html> 
15

Je l'ai résolu de cette façon:

img.class-name{ 

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

Fonctionne dans les versions actuelles d'Opera, Chrome, Firefox et Safari. IE quelqu'un? – Johan

+0

Oui, fonctionne également dans IE 11. – Zymotik

0
.image { 
    position: fixed; 
    margin: auto; 
    left: 0; 
    right: 0; 
    top: 0; 
    bottom: 0; 
} 
0

Je l'ai fait! Cette méthode est solide et fonctionne sur tous les principaux navigateurs.

style="position: fixed; margin: 0 50%; left: -850px; right: 0; top: 0; bottom: 0;" 

J'ai simplement utilisé une gauche de la moitié de la largeur de l'image et puis à travers shunté en utilisant la marge. Fonctionne un régal :)

+0

Avez-vous essayé cela à différentes largeurs de fenêtres - c'est-à-dire réactif? – Ruskin

0

Il existe une méthode très simple, cross browser, redimensionnement automatique. Prendre une image avec une largeur de 200px. Prendre la moitié de la largeur puis procédez comme suit:

#imgcent1 { 
    left: calc (100% - 100px/2); 
    /*rest of code*/ 
    } 

Assurez-vous qu'il est « espace blanc » pour éviter les nombres négatifs et positifs (mieux utiliser cette convention pour tous les opérandes). Il sera automatiquement redimensionné. Essayez-le et j'espère que le test sur d'autres navigateurs fera en sorte qu'il devienne la norme comme prévu.

0

Une seule image sur le web & réactif

Image de fond:

/image.png

CSS:

html, body { height: 100%; margin: 0px; } 

.bg-image { 
    width: 100%; 
    height: 100%; 
    background-image: url(image.png); 
    background-repeat: no-repeat; 
    background-position: center center; 
    background-size: contain; 
    text-indent: -9999px; 
} 

HTML:

<body> 
    <div class="bg-image">Some text not displayed</div> 
</body> 
0

KISS universel ("keep it simple et stupide") façon:

<p style="text-align: center;"> <img src="myImage.png" /></p> 
Questions connexes