Centrer une image en HTML, c’est vraiment à la portée de tout le monde. La méthode la plus simple et moderne consiste à utiliser Flexbox avec la propriété display: flex et justify-content: center sur le conteneur parent. Mais pas d’inquiétude, je vais te montrer toutes les techniques qui existent, de la plus ancienne à la plus récente, pour que tu puisses choisir celle qui te convient le mieux.
Personnellement, j’ai galéré pendant des années avec ce truc. Je me souviens de mes débuts où je passais des heures à essayer de comprendre pourquoi mon image refusait obstinément de se placer au milieu de la page. Aujourd’hui, avec l’expérience, je peux te dire que c’est beaucoup plus simple qu’il n’y paraît. Il suffit juste de connaître les bonnes techniques.
Sommaire
- Comprendre pourquoi une image ne se centre pas automatiquement
- Les méthodes modernes avec CSS
- Les anciennes méthodes qui fonctionnent encore
- Centrer une image verticalement et horizontalement
- Les erreurs à éviter absolument
- FAQ
| Méthode | Difficulté | Compatibilité | Recommandation |
|---|---|---|---|
| Flexbox | Facile | Tous navigateurs modernes | ⭐ Recommandée |
| margin: auto | Très facile | Universelle | ⭐ Recommandée |
| text-align: center | Très facile | Universelle | Correcte |
| CSS Grid | Moyenne | Navigateurs modernes | Pour layouts complexes |
| Balise center (obsolète) | Très facile | Anciens sites | ❌ À éviter |
Comprendre pourquoi une image ne se centre pas automatiquement
Le comportement naturel des images en HTML

Quand tu débutes en développement web, tu te demandes sûrement pourquoi les images ne se centrent pas toutes seules. C’est une question légitime, et la réponse est assez simple une fois qu’on la comprend.
En HTML, une image est ce qu’on appelle un élément inline par défaut. Ça veut dire qu’elle se comporte un peu comme du texte. Elle se place là où il y a de la place, généralement à gauche, et elle suit le flux normal du document. C’est comme quand tu écris du texte dans Word, il commence à gauche et avance vers la droite.
Le problème, c’est que les propriétés de centrage classiques ne fonctionnent pas de la même manière sur les éléments inline et les éléments block. J’ai mis du temps à comprendre cette distinction, mais une fois que tu l’as en tête, tout devient plus clair. Un élément block prend toute la largeur disponible et peut recevoir des marges automatiques. Un élément inline, lui, ne prend que l’espace dont il a besoin et se fiche un peu des marges qu’on veut lui donner.
Pour centrer une image, tu as donc deux options principales. Soit tu changes son comportement pour qu’elle devienne un élément block, soit tu agis sur son conteneur parent. Les deux approches fonctionnent très bien, et je vais te montrer comment faire dans les deux cas.
Les méthodes modernes avec CSS
La méthode Flexbox, ma préférée

Flexbox, ce truc est vraiment magique. C’est la méthode que j’utilise dans 90% des cas aujourd’hui, et pour cause, elle est incroyablement simple et puissante.
Le principe est le suivant. Tu crées un conteneur autour de ton image, tu lui appliques display: flex, et tu lui dis de centrer son contenu avec justify-content: center. Et voilà, c’est fait. Trois lignes de CSS et ton image est parfaitement centrée.
Voici le code complet :
html
<div class="conteneur-image">
<img src="mon-image.jpg" alt="Description de l'image">
</div>
css
.conteneur-image {
display: flex;
justify-content: center;
}
Ce que j’aime avec Flexbox, c’est que ça fonctionne vraiment dans tous les cas de figure. Que ton image soit petite ou grande, que ton conteneur ait une largeur fixe ou soit responsive, le centrage reste parfait. Personnellement, c’est devenu mon réflexe numéro un quand je dois centrer quoi que ce soit.
La technique margin auto, simple et efficace
Si tu veux une méthode encore plus minimaliste, la technique des marges automatiques est faite pour toi. Elle existe depuis longtemps et elle fonctionne à merveille.
L’idée est de transformer ton image en élément block et de lui donner des marges automatiques à gauche et à droite. Le navigateur va alors calculer l’espace disponible et répartir les marges également des deux côtés. Résultat, ton image se retrouve pile au milieu.
css
img {
display: block;
margin-left: auto;
margin-right: auto;
}
Tu peux aussi écrire ça de manière plus condensée :
css
img {
display: block;
margin: 0 auto;
}
Le 0 représente les marges en haut et en bas, et auto les marges à gauche et à droite. C’est une syntaxe raccourcie que tu retrouveras souvent dans les fichiers CSS.
Cette méthode a l’avantage de ne pas nécessiter de conteneur supplémentaire. Tu appliques directement les styles sur l’image et le tour est joué. Par contre, n’oublie pas le display: block, sinon ça ne marchera pas et tu te demanderas pourquoi pendant des heures. Je parle d’expérience.
CSS Grid pour les projets plus complexes
CSS Grid est une autre option moderne qui mérite d’être mentionnée. Elle est particulièrement utile quand tu travailles déjà avec une grille pour ta mise en page.
css
.conteneur-image {
display: grid;
place-items: center;
}
La propriété place-items: center est un raccourci génial qui centre le contenu à la fois horizontalement et verticalement. C’est pratique, mais généralement je réserve Grid pour des layouts plus élaborés. Pour simplement centrer une image, Flexbox ou margin auto suffisent largement.
Les anciennes méthodes qui fonctionnent encore
Text-align center sur le parent
Cette méthode date un peu, mais elle fonctionne toujours très bien. Comme je l’ai expliqué plus tôt, une image est un élément inline par défaut. Du coup, elle réagit à la propriété text-align de son conteneur parent, exactement comme du texte.
html
<div class="conteneur-image">
<img src="mon-image.jpg" alt="Description de l'image">
</div>
css
.conteneur-image {
text-align: center;
}
C’est simple, ça marche, et c’est compatible avec absolument tous les navigateurs, même les plus anciens. Le petit inconvénient, c’est que si tu as d’autres éléments dans le même conteneur, ils seront aussi centrés. Ça peut être voulu ou pas, selon ta situation.
J’utilise encore cette technique de temps en temps, notamment quand je travaille sur des projets où la compatibilité avec d’anciens navigateurs est importante. Dans un monde parfait, tout le monde utiliserait des navigateurs modernes, mais on sait bien que ce n’est pas toujours le cas.
La balise center, à oublier définitivement
Tu tomberas peut-être sur des tutoriels qui te conseillent d’utiliser la balise <center>. Oublie ça tout de suite. Cette balise est obsolète depuis HTML5, et même si elle fonctionne encore dans la plupart des navigateurs, ce n’est vraiment pas une bonne pratique.
html
<!-- NE FAIS PAS ÇA -->
<center>
<img src="mon-image.jpg" alt="Description de l'image">
</center>
Le problème avec cette approche, c’est qu’elle mélange le contenu et la présentation. En développement web moderne, on sépare toujours le HTML qui définit la structure et le CSS qui gère l’apparence. C’est plus propre, plus maintenable, et ça te facilitera la vie sur le long terme.
Centrer une image verticalement et horizontalement
Le centrage parfait avec Flexbox
Parfois, tu veux centrer une image non seulement horizontalement, mais aussi verticalement dans son conteneur. C’est typiquement le cas pour une image hero ou une bannière qui doit être pile au milieu de l’écran.
Avec Flexbox, c’est vraiment un jeu d’enfant. Tu ajoutes simplement align-items: center en plus de justify-content: center, et ton image sera centrée dans les deux axes.
css
.conteneur-image {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
Le height: 100vh est important ici. Il donne au conteneur une hauteur égale à la hauteur de la fenêtre du navigateur. Sans ça, le conteneur n’aurait pas de hauteur définie et le centrage vertical n’aurait pas de sens. C’est un détail qui m’a fait perdre pas mal de temps à mes débuts, alors je préfère te le signaler maintenant.
La méthode position absolute
Une autre technique pour le centrage parfait utilise le positionnement absolu combiné avec transform. Elle est un peu plus verbeuse, mais elle peut être utile dans certains cas spécifiques.
css
.conteneur-image {
position: relative;
height: 100vh;
}
.conteneur-image img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Le principe est le suivant. Tu places l’image à 50% du haut et 50% de la gauche du conteneur. Mais à ce stade, c’est le coin supérieur gauche de l’image qui est au centre, pas l’image elle-même. Le transform: translate(-50%, -50%) décale ensuite l’image de la moitié de sa propre largeur et hauteur, ce qui la centre parfaitement.
C’est une technique que j’utilisais beaucoup avant l’arrivée de Flexbox. Aujourd’hui, je la garde en réserve pour des situations particulières, mais Flexbox reste mon choix par défaut.
Les erreurs à éviter absolument
Les pièges classiques des débutants
Après des années à aider des gens avec leurs problèmes de CSS, j’ai remarqué que les mêmes erreurs reviennent constamment. Voici les principales à éviter :
- Oublier display: block avec margin auto : c’est l’erreur numéro un. Si ton image reste un élément inline, les marges automatiques ne fonctionneront pas. Pense toujours à ajouter
display: block. - Ne pas définir de hauteur pour le centrage vertical : si tu veux centrer verticalement, ton conteneur doit avoir une hauteur. Sans hauteur définie, il n’y a pas d’espace vertical dans lequel centrer l’image.
- Utiliser des techniques obsolètes : la balise
<center>ou l’attributalign="center"sur les images sont des reliques du passé. Utilise CSS, c’est la bonne façon de faire.
Vérifier que tout fonctionne
Quand ton centrage ne marche pas comme prévu, voici une astuce qui m’a sauvé plus d’une fois. Ajoute temporairement une bordure ou une couleur de fond à ton conteneur pour visualiser ses dimensions.
css
.conteneur-image {
display: flex;
justify-content: center;
border: 2px solid red; /* À retirer après debug */
}
Ça te permet de voir immédiatement si le problème vient du conteneur lui-même ou de l’image. Souvent, le conteneur n’a pas la taille qu’on imagine, et c’est ça qui cause le souci. Une fois que tu as identifié le problème, tu retires la bordure et tout est propre.
FAQ
Est-ce que je peux centrer plusieurs images en même temps ? Oui, absolument. Avec Flexbox, tu peux mettre plusieurs images dans le même conteneur et elles seront toutes centrées. Si tu veux qu’elles restent côte à côte au centre, c’est le comportement par défaut. Si tu veux qu’elles soient empilées verticalement et centrées, ajoute flex-direction: column à ton conteneur.
La méthode text-align center fonctionne-t-elle sur tous les navigateurs ? Oui, cette méthode est compatible avec tous les navigateurs, y compris les très anciens comme Internet Explorer 6. C’est probablement la méthode la plus universellement supportée qui existe.
Pourquoi margin auto ne fonctionne pas sur mon image ? Dans 99% des cas, c’est parce que tu as oublié d’ajouter display: block à ton image. Par défaut, une image est un élément inline, et les marges automatiques n’ont aucun effet sur les éléments inline. Ajoute display: block et ça devrait fonctionner immédiatement.
Quelle est la meilleure méthode pour un site responsive ? Flexbox est clairement la meilleure option pour les sites responsive. Elle s’adapte parfaitement à toutes les tailles d’écran sans nécessiter de media queries supplémentaires. L’image reste centrée que tu sois sur un grand écran de bureau ou sur un petit smartphone.
Puis-je utiliser ces techniques avec des images de fond (background-image) ? Non, ces techniques concernent les images insérées avec la balise <img>. Pour centrer une image de fond, tu utilises background-position: center sur l’élément qui contient l’image de fond. C’est une propriété CSS différente mais tout aussi simple à utiliser.
Comment centrer une image dans un tableau HTML ? Pour centrer une image dans une cellule de tableau, tu peux utiliser text-align: center sur la cellule (<td>) ou appliquer les techniques Flexbox directement sur la cellule. La première option est généralement plus simple et suffisante pour ce cas d’usage.





