CSS hat eine Eigenschaft namens vertical align. Sie kann am Anfang etwas verwirrend sein, daher dachte ich, wir könnten erklären, wofür sie da ist und einige Anwendungsfälle aufzeigen.
Der grundlegende Gebrauch sieht so aus
img {
vertical-align: middle;
}
Beachten Sie, dass in diesem Anwendungsfall `vertical-align` auf das `img`-Element angewendet wird. Bilder sind von Natur aus Inline-Elemente, was bedeutet, dass sie sich direkt in einer Zeile mit Text befinden, wenn sie können. Aber was bedeutet „in einer Zeile sitzen“ genau? Hier kommt `vertical-align` ins Spiel.
Die gültigen Werte sind: **baseline, sub, super, top, text-top, middle, bottom, text-bottom, length** oder ein **Wert in Prozent**.
Die Verwirrung entsteht meiner Meinung nach, wenn Leute versuchen, `vertical-align` auf Block-Level-Elemente anzuwenden und keine Ergebnisse erhalten. Wenn Sie ein kleines div in einem größeren div haben und das kleinere darin vertikal zentrieren möchten, hilft Ihnen `vertical-align` nicht.
Baseline
Der Standardwert von `vertical-align` (wenn Sie nichts deklarieren) ist **baseline**. Bilder werden auf der Grundlinie des Textes ausgerichtet. Beachten Sie, dass Unterlängen bei Buchstaben unter die Grundlinie abfallen. Bilder werden nicht mit dem tiefsten Punkt der Unterlängen ausgerichtet, das ist nicht die Grundlinie.

Middle
Der vielleicht häufigste Verwendungszweck von `vertical-align` ist die Einstellung auf „middle“ bei bildgroßen Bildern. Die Ergebnisse sind im Allgemeinen browserübergreifend konsistent.

Der Browser versucht sein Bestes, die Pixelhöhe des Textes mit der Pixelhöhe des Bildes zu zentrieren.

Beachten Sie, dass das Bild, wenn es größer als die aktuelle Schriftgröße und Zeilenhöhe ist, die folgenden Zeilen bei Bedarf nach unten verschiebt.

Text-bottom
Anders als die Grundlinie des Schriftsatzes ist der untere Rand des Textes, bis zu dem die Unterlängen reichen. Bilder können auch mit dieser Tiefe ausgerichtet werden.

Text-top
Das Gegenteil von `text-bottom` ist `text-top`, der höchste Punkt der aktuellen Schriftgröße. Sie können sich auch daran ausrichten. Beachten Sie, dass die aktuelle Schriftart, Georgia, wahrscheinlich einige Oberlängen hat, die höher sind als die hier dargestellten, daher der kleine Abstand.

Top & Bottom
`Top` und `Bottom` funktionieren ähnlich wie `text-top` und `text-bottom`, sind aber nicht durch Text eingeschränkt, sondern durch alles andere in dieser Zeile (wie ein anderes Bild). Wenn es also zwei Bilder in derselben Zeile gäbe, mit unterschiedlichen Höhen und beide größer als der Text in dieser Zeile, würden ihre Oberseiten (oder Unterseiten) unabhängig von der Textgröße ausgerichtet.
Sub & Super
Diese Werte stehen für hochgestellt und tiefgestellt, sodass Elemente, die mit diesen Methoden ausgerichtet werden, sich entsprechend positionieren.

Vertical Align bei Tabellenzellen
Im Gegensatz zu Bildern werden Tabellenzellen standardmäßig auf `middle` vertikal ausgerichtet.

Wenn Sie möchten, dass der Text am oberen oder unteren Rand der Zelle ausgerichtet wird, wenn er die benötigte Höhe überschreitet, wenden Sie die vertikale Ausrichtung `top` oder `bottom` an.

Wenn Sie `vertical-align` auf Tabellenzellen anwenden, ist es am besten, bei `top`, `bottom` und `middle` zu bleiben. Keiner der anderen Werte ist ohnehin sehr sinnvoll und führt zu unvorhersehbaren browserübergreifenden Ergebnissen. Zum Beispiel richtet `text-bottom` den Text in IE 6 am unteren Rand und in Safari 4 am oberen Rand aus. `sub` bewirkt eine mittlere Ausrichtung in IE 6 und eine obere Ausrichtung in Safari 4.
vertical-align und inline-block
Bilder verhalten sich zwar technisch gesehen wie Inline-Elemente, aber eher wie Inline-Block-Elemente. Sie können ihre Breite und Höhe festlegen und diese werden beachtet, anders als bei den meisten Inline-Elementen.
Inline-Block-Elemente verhalten sich bei `vertical-align` genauso wie Bilder. Beziehen Sie sich daher auf den obigen Abschnitt. Beachten Sie jedoch, dass nicht alle Browser Inline-Block-Elemente gleich behandeln, sodass `vertical-align` möglicherweise das geringste Ihrer Probleme ist. Das ist aber eine andere Geschichte....
Als Attribut veraltet
Gelegentlich sehen Sie „valign“, das für Tabellenzellen zur vertikalen Ausrichtung verwendet wird, z. B. `<td valign=top>`. Es ist zu beachten, dass dieses Attribut veraltet ist und nicht verwendet werden sollte. Es gibt eigentlich keinen Grund dafür, da Sie es ohnehin mit CSS tun können.
Weitere Informationen
- vertical-align im Almanach
- vertical-align auf MDN
- Christopher Aue: Alles, was Sie über Vertical-Align wissen müssen
- Trick damit zum Zentrieren von Dingen in übergeordneten Elementen mit unbekannter Höhe
vielen Dank, toller Beitrag
Das ist, wie Sie in einem früheren Beitrag sagten, einer dieser Momente, die die Art und Weise verändern, wie Sie CSS schreiben.
Vielen Dank für diesen großartigen Beitrag
wahrscheinlich die am meisten übersehene Eigenschaft in CSS. Gute Aufschlüsselung!
Ich habe gerade ein Layout durchgearbeitet, bei dem ich einige Bilder im Text ausrichten musste, und ich dachte mir: „Warum funktioniert diese Sache mit vertikaler Ausrichtung nicht??“ Jetzt sehe ich, wie sie gemeint ist :P Letztes Mal habe ich einfach relative Positionierung verwendet :S
Danke für die Klärung!
Ich habe immer relative Positionierung verwendet, um Bilder ein paar Pixel nach unten zu schieben. Nächstes Mal werde ich definitiv `vertical-align` ausprobieren. Danke für den Artikel!
Das ist eines dieser Dinge, die ich früher viel verwendet habe, als ich mit Tabellen entworfen habe. Der Unterschied ist, dass es keine CSS-Stilvorlage war, sondern eine Inline-Eigenschaft der Tabelle, des tr oder td.
Und raten Sie mal, ich habe sie vergessen und in meinen letzten Entwürfen nie verwendet.
Danke für die Erinnerung und die ausgezeichnete Erklärung.
Beste Grüße
Als ich CSS lernte, war ich definitiv ein Opfer des Versuchs, dies für Block-Level-Elemente zum Laufen zu bringen, und habe es seitdem nicht mehr wirklich benutzt, nachdem ich herausgefunden hatte, dass das für diese nicht funktionierte. Danke für die Klärung!
Toller Beitrag, die Bilder machen es kristallklar.
Hat mir sehr gut gefallen. Danke für die visuelle Hilfe beim Verständnis dieses Themas. Vertikale Ausrichtungen werden nicht genug besprochen.
schöner Beitrag, vielen Dank Chris. Hat mir ein paar Dinge entmystifiziert.
Danke Chris. Das wird mir von Nutzen sein.
Danke, dass Sie sich die Zeit genommen haben, das für uns aufzuschlüsseln. Ich habe das noch bei niemandem gesehen und es hätte mir viel Ausprobieren erspart. Jetzt ist es klarer. Machen Sie weiter so tolle Arbeit auf dieser Seite!
Ich habe im Februar einen ähnlichen Artikel geschrieben. Falls jemand die chinesische Version mag, hier ist der Link
http://www.61dh.com/blog/2009/02/blog-post.html
:-)
Toller Beitrag, ich liebe diese Beiträge, die sich nur auf eine Sache konzentrieren und sie vollständig erklären. In den wenigen Minuten, die ich zum Lesen gebraucht habe, habe ich viel gelernt.
Sie haben vergessen zu erklären, wie die Festlegung einer Pixelhöhe funktioniert. Einfach ausgedrückt: `vertical-align: 0px;` beginnt dort, wo `vertical-align: bottom;` wäre, und geht von dort nach oben.
Meiner Erfahrung nach sind die zuverlässigsten Eigenschaften `top` und die Festlegung einer Pixelhöhe.
Was Inline-Block angeht, gibt es eine einfache Lösung, um sicherzustellen, dass Inline-Block in allen Browsern gleich funktioniert.
Besuchen Sie den Webdev-Bereich meines Blogs für weitere Möglichkeiten, Inline-Block und `vertical-alignment` zu nutzen.
Sehr interessant. Ich kann mir eine Website vorstellen, auf der ich dies bereits an einigen Stellen hinzufügen muss. Mann, ich liebe es, ständig neue Dinge zu lernen.
Kleine Dinge... aber diese Dinge helfen viel, wenn man Anfänger ist... Deshalb leistet Chris gute Arbeit, indem er Anfängern hier hilft...
sehr sehr informativ.. vielen Dank
Toller Beitrag, ich benutze dafür immer Trial and Error!
Danke!
Danke für diesen gründlichen Beitrag! Wirklich hochwertige Recherche.
Toller Beitrag, danke :)
Hallo Chris, ich weiß, es ist ein wenig anders, aber kannst du eine genaue Methode geben, um Bilder über Text auszurichten, wenn das Bild ein Link ist? Ich weiß, dass man die linken und rechten Ränder auf `auto` setzen kann und es sollte einigermaßen funktionieren, aber wenn man das Bild als Block-Element setzen muss, damit es sich beim Klicken nicht verschiebt, wird der Link über das gesamte Block-Element, anstatt nur über das Bild, gelegt.
Verstehst du, was ich meine?
Schöner Beitrag, Chris, das ist harte CSS-Arbeit!
Ich wusste das.. danke
Wie richtet man Inhalte in einem div vertikal aus? Gibt es eine Lösung außer der oberen Margin in % (schlecht für dynamische Seiten) oder der Verwendung von `display: table-cell` (funktioniert nicht für IE)?
Cool, großartige Sache, Chris!
-FireDart
Sweet, Bruder, ich liebe die letzten paar Beiträge, die dieses Zeug erklären, das ich mich nie wirklich gekümmert habe, selbst zu recherchieren!! Danke!
Großartig, vielen Dank! Ich habe immer versucht, die vertikale Ausrichtung auf den Container anzuwenden, in dem sich das Bild und der Text befanden.
Danke für die Erklärung, mit Bildern ist es immer einfacher zu verstehen.
Ich glaube nicht, dass `valign` bei TDs veraltet ist, und wenn Sie sich Sorgen machen, wie Ihre Seite ungestylt angezeigt wird, kann es immer noch nützlich sein.
Wow, fantastischer Beitrag! Danke.
Übrigens, es gibt immer Raum für veraltete Tags in HTML-Newslettern. Himmel, diese Dinger sind ein Chaos! Sie verwenden sogar Tabellen. Hast du jemals einen Beitrag darüber gemacht, wie man Newsletter codiert?
Schöner Beitrag! Ich habe lange über „align-vertical“ nachgedacht. Danke!
„. Es ist zu beachten, dass dieses Attribut veraltet ist und nicht verwendet werden sollte. Es gibt eigentlich keinen Grund dafür, da Sie es ohnehin mit CSS tun können.“
Es sei denn, Sie erstellen E-Mails und CSS funktioniert nicht, dann muss es verwendet werden.
gilt für
td valign=’middle’
Wow, Sie haben es so gut erklärt... danke
Vielen Dank dafür! Ich wusste, wie man diese Eigenschaft für Tabellenzellen verwendet, aber ich hatte keine Ahnung, dass sie für Bilder verwendet werden kann. Das wird auf meiner Website sicherlich zum Einsatz kommen.
tolle Artikel. Sie sollten ein Buch schreiben. Es würde zum Lehrbuch an Universitäten werden. : )
Das ist wirklich nützlich, danke!
`vertical-align` kann auch bei der Arbeit mit Kontrollkästchen und Radio-Formularelementen nützlich sein. Ich verwende es, um meine Labels und Eingabeelemente auf einer Mittellinie zu halten.
Das war genau das, was ich gerade brauchte...
Danke dafür
Das Coolste an dieser Eigenschaft ist die %-Ausrichtung. Verwenden Sie einfach `text-align:nn%` und Sie richten Ihren Text mühelos an Symbolen aus! Negative Werte sind ebenfalls erlaubt und das Dokument ist immer noch ziemlich W3C-gültig :)
Chris, du bist der Beste! Du bist ohne Zweifel der beste Webdesign-Lehrer, den ich je hatte!
Ich war vorher verwirrt über `vertical-align`. Sie haben es mir klar gemacht. Vielen Dank.
Sehr klar und nützlich!
Danke!
Ich kannte das nie wirklich. Danke für diesen Beitrag.
Ausgezeichnete Lektüre, sehr gut erklärt.
gute sache...
Q
Funktioniert das, wenn Bild oder Textlink als **Block-Element** mit **float left/right** umschlossen sind? Ich stolpere oft in diesen Fall.
DANKE!!!!!!!!!!!!!!!!!! Ich habe `vertical-align: super` getestet, es funktioniert wie ein Zauber in IE6 ohne den zusätzlichen Zeilenabstand. Ich hasse hochgestellte Zeichen wegen dem! Danke Chris, du bist tatsächlich ein Ritter in glänzender CSS-Rüstung =D
Danke für die klare Erklärung!!!
Das ist sehr nützlich. :’3
Das kam heute sehr gelegen, danke für die Erinnerung
Wenn `vertical-align` zusammen mit `underline` verwendet wird, wird die Unterstreichung in Firefox als Überstreichung angezeigt. Gibt es eine Ersetzung für `vertical-align` in CSS?
Das Seltsamste. Wenn `line-height` auf Pixel statt auf die typische Notation, z. B. 1,6, gesetzt wird, wird die vertikale Ausrichtung in einigen Browsern völlig verrückt. Bei mir haben sich `text-top` und `text-bottom` in Chrome tatsächlich vertauscht.
Ich habe es falsch benutzt. Dieser Artikel war sehr hilfreich.