Ich habe einen div
Satz auf display:block
( 90px
height
und width
) und ich habe einen Text darin.
Ich muss den Text sowohl vertikal als auch horizontal in der Mitte ausrichten.
Ich habe es versucht text-align:center
, aber es macht nicht den horizontalen Teil, also habe ich es versucht vertical-align:middle
, aber es hat nicht funktioniert.
Irgendwelche Ideen?
text-align:center
macht nicht den "vertikalen Teil"?Antworten:
Wenn es sich um eine Text- und / oder Bildzeile handelt, ist dies einfach. Benutz einfach:
Das ist es. Wenn es mehrere Zeilen sein können, ist es etwas komplizierter. Es gibt jedoch Lösungen auf http://pmob.co.uk/ . Suchen Sie nach "vertikal ausrichten".
Da es sich in der Regel um Hacks oder das Hinzufügen komplizierter Divs handelt, verwende ich normalerweise eine Tabelle mit einer einzelnen Zelle, um dies so einfach wie möglich zu gestalten.
Update für 2020:
Sofern Sie es nicht in früheren Browsern wie Internet Explorer 10 verwenden müssen, können Sie Flexbox verwenden. Es wird von allen gängigen Browsern weitgehend unterstützt . Grundsätzlich muss der Container als flexibler Container angegeben werden, zusammen mit der Zentrierung entlang seiner Haupt- und Querachse:
So geben Sie eine feste Breite für das untergeordnete Element an, die als "flexibles Element" bezeichnet wird:
Beispiel: http://jsfiddle.net/2woqsef1/1/
Um den Inhalt in Schrumpffolie zu verpacken, ist es noch einfacher: Entfernen Sie einfach die
flex: ...
Linie aus dem Flex-Element, und es wird automatisch in Schrumpffolie verpackt.Beispiel: http://jsfiddle.net/2woqsef1/2/
Die obigen Beispiele wurden in gängigen Browsern wie MS Edge und Internet Explorer 11 getestet.
Ein technischer Hinweis, wenn Sie ihn anpassen müssen: Da dieser Flex-Artikel innerhalb des Flex-Elements selbst kein Flex-Container ist, funktioniert die alte CSS-Methode ohne Flexbox wie erwartet. Wenn Sie dem aktuellen Flex-Container jedoch ein zusätzliches Flex-Element hinzufügen, werden die beiden Flex-Elemente horizontal platziert. Um sie vertikal zu platzieren, fügen Sie die
flex-direction: column;
zum Flex-Container hinzu. So funktioniert es zwischen einem Flex-Container und seinen unmittelbaren untergeordneten Elementen.Es gibt eine alternative Methode zum Zentrieren: Geben Sie nicht
center
die Verteilung auf der Haupt- und Querachse für den Flex-Container an, sondern geben Siemargin: auto
auf dem Flex-Element den gesamten zusätzlichen Platz in alle vier Richtungen und die gleichmäßig verteilten Ränder an macht das Flex-Element in alle Richtungen zentriert. Dies funktioniert nur, wenn mehrere Flex-Elemente vorhanden sind. Diese Technik funktioniert auch unter MS Edge, jedoch nicht unter Internet Explorer 11.Update für 2016/2017:
Es kann häufiger verwendet werden
transform
und funktioniert auch in älteren Browsern wie Internet Explorer 10 und Internet Explorer 11. Es kann mehrere Textzeilen unterstützen:Beispiel: https://jsfiddle.net/wb8u02kL/1/
So schrumpfen Sie die Breite ein:
Die obige Lösung verwendete eine feste Breite für den Inhaltsbereich. Verwenden Sie, um eine eingeschweißte Breite zu verwenden
Beispiel: https://jsfiddle.net/wb8u02kL/2/
Wenn die Unterstützung für Internet Explorer 10 benötigt wird, funktioniert die Flexbox nicht und die oben beschriebene Methode und die
line-height
Methode funktionieren. Andernfalls würde die Flexbox den Job erledigen.quelle
display: table-cell
Immobilie, FYI. Wenn Sie es verwenden, verhält sich das Element wie eine Tabellenzelle und ermöglichtvertical-align: middle;
font:
diese verwenden, stellen Sie sicher, dass Sie sie vor dieline-
Höhe stellen. "Gemeinsame Techniken ab 2014:
Ansatz 1 -
transform
translateX
/translateY
:Beispiel hier / Vollbild Beispiel
In unterstützten Browsern (die meisten von ihnen) können Sie
top: 50%
/left: 50%
in Kombination mit verwenden,translateX(-50%) translateY(-50%)
um das Element dynamisch vertikal / horizontal zu zentrieren.Ansatz 2 - Flexbox-Methode:
Beispiel hier / Vollbild Beispiel
In unterstützten Browser setzte die
display
des Zielelementsflex
und die Verwendungalign-items: center
für eine vertikale Zentrierung undjustify-content: center
zur horizontalen Zentrierung. Vergessen Sie nicht, Herstellerpräfixe für zusätzliche Browserunterstützung hinzuzufügen ( siehe Beispiel ).Ansatz 3 -
table-cell
/vertical-align: middle
:Beispiel hier / Vollbild Beispiel
In einigen Fällen müssen Sie , dass das gewährleisten
html
/body
Element Höhe eingestellt ist100%
.Stellen Sie für die vertikale Ausrichtung das übergeordnete Element
width
/height
to ein100%
und fügen Sie es hinzudisplay: table
. Ändern Sie dann für das untergeordnete Element dasdisplay
totable-cell
und fügen Sie es hinzuvertical-align: middle
.Für die horizontale Zentrierung können Sie entweder
text-align: center
den Text und andereinline
untergeordnete Elemente hinzufügen , um sie zu zentrieren . Alternativ können Siemargin: 0 auto
davon ausgehen, dass das Elementblock
eben ist.Ansatz 4 - Absolut
50%
von oben mit Verschiebung positioniert :Beispiel hier / Vollbild Beispiel
Bei diesem Ansatz wird davon ausgegangen, dass der Text eine bekannte Höhe hat - in diesem Fall
18px
. Positionieren Sie das Element einfach unbedingt50%
von oben relativ zum übergeordneten Element. Verwenden Siemargin-top
in diesem Fall einen negativen Wert, der der Hälfte der bekannten Höhe des Elements entspricht-9px
.Ansatz 5 - Die
line-height
Methode (am wenigsten flexibel - nicht vorgeschlagen):Beispiel hier
In einigen Fällen hat das übergeordnete Element eine feste Höhe. Für die vertikale Zentrierung müssen Sie lediglich einen
line-height
Wert für das untergeordnete Element festlegen , der der festen Höhe des übergeordneten Elements entspricht.Obwohl diese Lösung in einigen Fällen funktioniert, ist es erwähnenswert, dass sie nicht funktioniert, wenn mehrere Textzeilen vorhanden sind - wie diese .
Die Methoden 4 und 5 sind nicht die zuverlässigsten. Gehen Sie mit einem der ersten 3.
quelle
table-cell
so viel wie möglich vermeiden möchte .Verwenden von Flexbox / CSS:
Das CSS:
Aus dem Quick-Tipp: Der einfachste Weg, Elemente vertikal und horizontal zu zentrieren
quelle
display: -ms-flexbox; -ms-flex-align: center; -ms-flex-pack: center
.text-align:center
fürinline-
Elemente hinzufügen .. wie Text.Fügen Sie die Zeile
display: table-cell;
zu Ihrem CSS-Inhalt für dieses div hinzu.Nur Tabellenzellen unterstützen die
vertical-align: middle;
, aber Sie können diese [Tabellenzellen] -Definition der div ...Ein Live-Beispiel finden Sie hier: http://jsfiddle.net/tH2cc/
quelle
position
es absolut oder fest ist. Siehe: jsfiddle.net/tH2cc/1636Ich verwende immer das folgende CSS für einen Container, um seinen Inhalt horizontal und vertikal zu zentrieren.
Sehen Sie es hier in Aktion: https://jsfiddle.net/yp1gusn7/
quelle
Sie können sehr einfachen Code dafür versuchen:
Codepen-Link: http://codepen.io/santoshkhalse/pen/xRmZwr
quelle
Geben Sie diese CSS-Klasse dem Ziel <div>:
quelle
Sie können die
flex
Eigenschaft beim übergeordneten Element verwendendiv
und diemargin:auto
Eigenschaft den untergeordneten Elementen hinzufügen :Weitere Optionen finden Sie
flex
hier: https://css-tricks.com/snippets/css/a-guide-to-flexbox/quelle
Ansatz 1
Ansatz 2
Ansatz 3
quelle
quelle
quelle
quelle
quelle
Das funktioniert bei mir (OK getestet!):
HTML:
CSS:
Sie können andere Werte als 50% wählen. Zum Beispiel 25%, um 25% der Eltern zu zentrieren.
quelle
quelle
Sie können die folgenden Methoden ausprobieren:
Wenn Sie ein einzelnes Wort oder einen einzeiligen Satz haben, kann der folgende Code den Trick tun.
Haben Sie einen Text in einem div-Tag und geben Sie ihm eine ID. Definieren Sie die folgenden Eigenschaften für diese ID.
Hinweis: Stellen Sie sicher, dass die Eigenschaft für die Zeilenhöhe mit der Höhe der Teilung übereinstimmt.
Bild
Wenn der Inhalt jedoch mehr als ein einzelnes Wort oder eine Zeile enthält, funktioniert dies nicht. Es kann auch vorkommen, dass Sie die Größe einer Division nicht in px oder% angeben können (wenn die Division wirklich klein ist und der Inhalt genau in der Mitte liegen soll).
Um dieses Problem zu lösen, können Sie die folgende Kombination von Eigenschaften ausprobieren.
Bild
Diese 3 Codezeilen setzen den Inhalt genau in die Mitte einer Abteilung (unabhängig von der Größe der Anzeige). Das "Align-Items: Center" hilft bei der vertikalen Zentrierung, während "Justify-Content: Center" es horizontal zentriert.
Hinweis: Flex funktioniert nicht in allen Browsern. Stellen Sie sicher, dass Sie geeignete Herstellerpräfixe für zusätzliche Browserunterstützung hinzufügen.
quelle
GITTER
Code-Snippet anzeigen
quelle
Anpassen der Linienhöhe, um die vertikale Ausrichtung zu erhalten.
quelle
Dies sollte die richtige Antwort sein. Am saubersten und einfachsten:
quelle
Stil anwenden:
Ihr Text wird unabhängig von seiner Länge zentriert.
quelle
Das hat bei mir funktioniert:
quelle
Für mich war das die beste Lösung:
HTML:
CSS:
quelle
quelle
Wirklich einfacher Code, der für mich funktioniert! Nur eine Zeile und Ihr Text wird horizontal zentriert.
Die Ausgabe sieht folgendermaßen aus:
Bitte stimmen Sie über diese Antwort ab, wenn dies nur dazu dient, Entwicklern, die nach einfachen Lösungen suchen, Zeit zu sparen. Vielen Dank! :) :)
quelle
Versuchen Sie das folgende Beispiel. Ich habe Beispiele für jede Kategorie hinzugefügt: horizontal und vertikal
quelle