CSS Flexbox / Grid Methode:
Beispiel hier / Vollbild Beispiel
In unterstützten Browsern setze das display
des zielgerichteten Elements auf flex
und verwende align-items: center
für die vertikale Zentrierung und justify-content: center
für die horizontale Zentrierung. Beachte, dass auch der Elterncontainer eine Höhe benötigt (in diesem Fall 100%).
html, body, .container {
height: 100%;
}
.container {
display: flex;
align-items: center;
justify-content: center;
}
Ich bin vertikal/horizontal zentriert!
Transform
TranslateX
/TranslateY
Methode:
Beispiel hier / Vollbild Beispiel
In unterstützten Browsern (die meisten von ihnen) kannst du top: 50%
/left: 50%
in Kombination mit translateX(-50%) translateY(-50%)
verwenden, um das Element dynamisch vertikal/horizontal zu zentrieren.
.container {
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
Ich bin vertikal/horizontal zentriert!
Table-cell
/Vertical-align: Middle
Methode:
Beispiel hier / Vollbild Beispiel
In einigen Fällen musst du sicherstellen, dass die Höhe des html
/body
Elements auf 100%
gesetzt ist.
Für die vertikale Ausrichtung setze die width
/height
des Elternelements auf 100%
und füge display: table
hinzu. Ändere dann für das Kindelement das display
in table-cell
und füge vertical-align: middle
hinzu.
Wenn du das Element zentrieren möchtest, könntest du entweder text-align: center
hinzufügen, um den Text und andere inline
Kindelemente zentrieren. Alternativ könntest du margin: 0 auto
verwenden, vorausgesetzt das Element ist block
Ebene.
html, body {
height: 100%;
}
.parent {
width: 100%;
height: 100%;
display: table;
text-align: center;
}
.parent > .child {
display: table-cell;
vertical-align: middle;
}
Ich bin vertikal/horizontal zentriert!
Absolut positioniert 50%
vom oberen Rand mit Verschiebungsmethode:
Beispiel hier / Vollbild Beispiel
Dieser Ansatz geht davon aus, dass der Text eine bekannte Höhe hat - in diesem Fall 18px
. Positioniere das Element einfach absolut 50%
vom oberen Rand entfernt, relativ zum Elternelement. Verwende einen negativen margin-top
Wert, der die Hälfte der bekannten Höhe des Elements beträgt, in diesem Fall - -9px
.
html, body, .container {
height: 100%;
}
.container {
position: relative;
text-align: center;
}
.container > p {
position: absolute;
top: 50%;
left: 0;
right: 0;
margin-top: -9px;
}
Ich bin vertikal/horizontal zentriert!
Die line-height
Methode (wenig flexibel - nicht empfohlen) Methode:
Beispiel hier
In einigen Fällen wird das Elternelement eine feste Höhe haben. Für die vertikale Zentrierung musst du einfach einen line-height
Wert im Kindelement setzen, der der festen Höhe des Elternelements entspricht.
Obwohl diese Lösung in einigen Fällen funktioniert, ist es erwähnenswert, dass sie nicht funktioniert, wenn es mehrere Zeilen Text gibt - wie hier.
.parent {
height: 200px;
width: 400px;
background: lightgray;
text-align: center;
}
.parent > .child {
line-height: 200px;
}
Ich bin vertikal/horizontal zentriert!