Die schnelle Antwort: text-align am Elternelement
Ein <img> ist ein Inline-Element: Es steht in einer Textzeile wie ein Wort. Also zentrierst du es genauso wie Text, mit text-align: center am Elternelement:
Der Style gehört an das div, nicht an das Bild. text-align: center am <img> selbst bewirkt nichts, weil das Bild keinen Text enthält, der ausgerichtet werden könnte.
Methode 2: display block und margin auto
Willst du lieber das Bild selbst stylen, mach es zu einem Block und gib ihm automatische seitliche Margins. Der freie Platz wird gleichmäßig auf beide Seiten verteilt:
Das graue Bild hat margin: 0 auto, bleibt aber am Zeilenanfang: Auto-Margins bewirken an einem Inline-Element nichts. display: block ist das fehlende Stück. max-width: 100% mit height: auto verhindert, dass das Bild auf einem schmalen Bildschirm überläuft, und erhält seine Proportionen.
Methode 3: Flexbox oder Grid, auch vertikal
Um ein Bild in einer Box in beide Richtungen zu zentrieren, gib der Box eine Höhe und zentriere ihren Inhalt mit Grid oder Flexbox:
Das Flexbox-Gegenstück ist display: flex; justify-content: center; align-items: center;. In beiden Fällen braucht die Box eine Höhe, die größer als das Bild ist, sonst gibt es keinen Platz zum Zentrieren. Dieselben Methoden zentrieren jedes Element; die Seite div zentrieren vergleicht sie alle.
Ein Bild mit Bildunterschrift zentrieren
Ein Foto mit Bildunterschrift gehört in ein <figure>. Zentriere den Inhalt des figure, und Bild und Bildunterschrift stehen gemeinsam in einer Linie:
Mehrere Bilder in einer zentrierten Reihe
Eine Reihe von Logos oder Vorschaubildern ist ein Fall für Flexbox. justify-content: center zentriert die Gruppe, gap setzt die Abstände, und flex-wrap lässt sie auf kleinen Bildschirmen umbrechen, während sie zentriert bleibt:
Welche Methode du nimmst
| Situation | Nimm |
|---|---|
| Ein Bild in einem Absatz oder einem einfachen Block | text-align: center am Elternelement |
| Du kannst nur das Bild stylen | display: block; margin: 0 auto; |
| In beide Richtungen in einer Box zentrieren | Grid place-items: center (oder Flexbox) an der Box |
| Eine Reihe von Bildern | Flexbox mit justify-content: center |
| Ein Bild mit Bildunterschrift | <figure> mit text-align: center |
| Ein Hintergrundbild, kein Inhalt | background-position: center, siehe background-image |
Die alten Wege, und warum nicht
In alten Tutorials findest du noch diese:
<!-- obsolete: do not use -->
<center><img src="logo.png" alt="Logo"></center>
<img src="logo.png" alt="Logo" align="center">
<center> und das Attribut align wurden aus HTML entfernt. Browser stellen <center> aus Gründen der Abwärtskompatibilität noch dar, und align="center" an einem Bild zentriert es nicht einmal horizontal: Browser behandeln es als vertikale Ausrichtung in der Zeile. Nimm eine der CSS-Methoden oben.
Häufige Fehler
text-align: centeram<img>. Setz es an das Elternelement.margin: 0 autoan einem Inline-Bild. Fügedisplay: blockhinzu.- Vertikal zentrieren ohne Höhe am Elternelement. Die Box schrumpft auf das Bild, und es bleibt kein Platz zum Zentrieren.
float: center. Diesen Wert gibt es nicht. Floats gehen nur an eine Seite.altvergessen. Auch ein zentriertes Bild braucht einen Alternativtext; nimmalt=""nur für rein dekorative Bilder.- Ein verzerrtes Bild. Setzt du
widthundheightin CSS auf Werte mit anderem Seitenverhältnis, wird es verzerrt. Setz nur einen Wert und nimmheight: auto, oder ergänzeobject-fit: cover.
Häufig gestellte Fragen
Wie zentriere ich ein Bild in HTML?
Setz text-align: center an das Element, das es enthält, zum Beispiel <p style="text-align: center;"><img src="logo.png" alt="Logo"></p>. Ein Bild ist standardmäßig inline und wird deshalb wie ein Wort im Text zentriert.
Wie zentriere ich ein Bild mit margin auto?
Mach das Bild zuerst zu einem Block: img { display: block; margin: 0 auto; }. Auto-Margins zentrieren keine Inline-Elemente, und ein Bild ist inline, bis du das änderst.
Wie zentriere ich ein Bild vertikal und horizontal?
Mach seinen Container zu einem Grid (oder Flexbox) mit einer Höhe: .box { display: grid; place-items: center; height: 300px; }. Das Bild sitzt dann in der Mitte der Box.
Kann ich den Tag <center> oder align="center" nutzen, um ein Bild zu zentrieren?
Nein. <center> und das Attribut align an <img> sind in HTML5 veraltet. Browser stellen <center> für alte Seiten noch dar, aber align="center" an einem Bild richtet es vertikal in der Zeile aus, nicht horizontal. Nimm CSS.
Warum ist unter meinem zentrierten Bild eine kleine Lücke?
Ein Inline-Bild sitzt auf der Grundlinie des Textes und lässt darunter Platz für Unterlängen von Buchstaben. Setz display: block am Bild oder vertical-align: middle, und die Lücke verschwindet.