Vertikale CSS-Ausrichtung

7

Ich habe eine img in floated div und ich weiß nicht, wie man es vertikal zentriert.

%Vor%

vertikal ausrichten: Mitte funktioniert natürlich nicht.

Ссылка

    
anonymous 24.01.2011, 18:50
quelle

8 Antworten

15

Um Text innerhalb eines Elternelements vertikal auszurichten und zu beachten, dass ein img ein Inline-Element ist und sich so ähnlich verhält, können Sie einfach line-height auf setzen Die height des übergeordneten Elements:

%Vor%

JS Fiddle-Demo .

    
David Thomas 24.01.2011, 18:56
quelle
11

Der CSS-Stil vertical-align gibt die Ausrichtung von Text innerhalb seiner Textzeile an. So können Sie beispielsweise Text als hochgestellten oder tiefgestellten Text angeben.

Es ist also eigentlich nicht beabsichtigt, ein Element innerhalb einer Box vertikal auszurichten.

Es gibt jedoch eine explizite Ausnahme: Tabellenzellen (dh <td> und <th> Elemente) verwenden den vertical-align Stil, um genau das zu tun: richten Sie den Inhalt der Zelle innerhalb der Zelle aus.

Diese Ausnahme ist etwas eigenartig - es sollte wirklich nicht existieren. Die CSS-Designer haben es eingeführt, damit CSS das valign -Attribut von Tabellenelementen reproduzieren kann, das häufig von Designern in den alten Zeiten von Tabellen-basierten Layouts verwendet wurde.

Bei anderen Elementen kann der Inhalt einer Box vertikal in der Mitte ausgerichtet werden, was ein bisschen Kunst sein kann. Es gibt verschiedene Techniken:

  1. Bei einzelnen Textzeilen setzen Sie einfach line-height auf die gleiche Höhe wie das gesamte Feld. Sie werden wahrscheinlich nicht einmal vertical-align dafür benötigen.

  2. Verwenden Sie display:table-cell; , damit das Element eine Tabellenzelle simuliert, und verwenden Sie dann vertical-align . Dies funktioniert, kann jedoch unbeabsichtigte Konsequenzen haben (es gibt andere Attribute von Tabellenzellen, die Sie möglicherweise nicht simulieren möchten).

  3. Wenn Sie die Höhe des Elements kennen, das Sie vertikal ausrichten möchten, können Sie es wie folgt auf 50% minus die Hälfte seiner Höhe positionieren:

    %Vor%

Es gibt ein paar andere, aber diese sollten Ihnen den Einstieg erleichtern.

Ich hoffe, das hilft.

    
Spudley 24.01.2011 19:06
quelle
4

Für eine modernere (IE8 +) Lösung, die keine Tabellen verwendet, mag ich diese > am besten.

%Vor%     
Justin 08.03.2013 22:38
quelle
3

vertical-align -Eigenschaft ist nur für td -Elemente wirklich gut. Versuchen Sie etwas wie:

%Vor%

ODER weil Sie die Höhe und Breite von img kennen:

%Vor%     
Jason 24.01.2011 18:53
quelle
2

Hübscher cooler und moderner Ansatz (mit angegebener Höhe) :

%Vor%     
Agat 08.09.2013 22:45
quelle
2

Ich verwende die Eigenschaft display: box:

%Vor%

Siehe die js-Geige hier: verical align js-fiddle

    
Ruwen 03.11.2014 10:13
quelle
1

Javascript wäre wahrscheinlich das beste Mittel, um das Bild für jeden Fall in der vertikalen Mitte zu zentrieren. Wenn Sie eine Bibliothek wie jQuery verwenden können, sind es nur ein paar Zeilen Code.

%Vor%

});

    
heymrcarter 24.01.2011 19:12
quelle
1

Verwenden Sie die Eigenschaft translate, es ist einfach und funktioniert sogar im IE:

%Vor%     
yulie 05.02.2015 22:50
quelle

Tags und Links