Ich habe eine Div mit zwei Bildern und einer h1
. Alle von ihnen müssen vertikal innerhalb des Div nebeneinander ausgerichtet sein.
Eines der Bilder muss absolute
innerhalb des Div positioniert werden.
Was ist das CSS, das benötigt wird, damit es in allen gängigen Browsern funktioniert?
<div id="header">
<img src=".." ></img>
<h1>testing...</h1>
<img src="..."></img>
</div>
html
css
vertical-alignment
Abdu
quelle
quelle
Antworten:
Wow, dieses Problem ist beliebt. Es basiert auf einem Missverständnis in der
vertical-align
Immobilie. Dieser ausgezeichnete Artikel erklärt es:Verständnis
vertical-align
oder "Wie (nicht) Inhalte vertikal zentriert werden" von Gavin Kistner."Wie zentriere ich mich in CSS?" zentrieren Sie ist ein großartiges Web-Tool, mit dem Sie die erforderlichen CSS-Zentrierungsattribute für verschiedene Situationen finden können.
Kurz gesagt (und um Fäulnis zu verhindern) :
vertical-align: middle
. Der „Kontext“ ist jedoch nicht die gesamte Höhe des übergeordneten Containers, sondern die Höhe der Textzeile, in der sie sich befinden. Jsfiddle-Beispielabsolute
und geben ihreheight
,margin-top
undtop
Position.jsfiddle Beispielline-height
ihre Höhe ausfüllen. Diese Methode ist meiner Erfahrung nach sehr vielseitig. jsfiddle Beispielquelle
vertical-align: middle
) ist, dass Sie eine feste Höhe angeben müssen. Für Responsive Web Design nicht sehr gut möglich .inline-block
undtable-cell
Elementen. Wenn Sie Probleme damit haben, versuchen Sie,line-height
das Containerelement (dh den Kontext) anzupassen, da es in denvertical-align
Zeilenfeldberechnungen verwendet wird.Jetzt, da die Flexbox-Unterstützung zunimmt, würde dieses auf das enthaltende Element angewendete CSS das enthaltene Element vertikal zentrieren:
Verwenden Sie die vorangestellte Version, wenn Sie auch auf Explorer 10 und alte (<4.4) Android-Browser abzielen müssen:
quelle
align-items
AbschnittIch habe diesen sehr einfachen Code verwendet:
HTML:
CSS:
Unabhängig davon, ob Sie a
.class
oder an verwenden#id
, ändert sich das Ergebnis natürlich nicht.quelle
Es hat bei mir funktioniert:
quelle
margin : 0 auto
funktioniert dies aufgrund derdisplay: table-cell
quelle
justify-content: center
behoben meinen Mangel an horizontaler ZentrierungEine Technik von einem Freund von mir:
HTML:
CSS:
DEMO hier
quelle
Zum Blockieren von Blockelementen in der Mitte (funktioniert in IE9 und höher) ist ein Wrapper erforderlich
div
:quelle
Ausgerichtet wie ? Spitzen der Bilder am oberen Rand des Textes ausgerichtet?
Absolut relativ zum DIV positioniert? Vielleicht könnten Sie skizzieren, wonach Sie suchen ...?
fd hat die Schritte zur absoluten Positionierung beschrieben und die Anzeige des
H1
Elements so angepasst, dass Bilder inline dazu angezeigt werden. Dazu füge ich hinzu, dass Sie die Bilder mithilfe desvertical-align
Stils ausrichten können :... dies würde den Header und die Bilder zusammenfügen, wobei die oberen Kanten ausgerichtet sind. Es gibt andere Ausrichtungsoptionen. siehe die Dokumentation . Möglicherweise ist es auch vorteilhaft, den DIV fallen zu lassen und die Bilder innerhalb des
H1
Elements zu verschieben. Dadurch erhält der Container einen semantischen Wert, und die Anzeige der folgenden Elemente muss nicht mehr angepasst werdenH1
:quelle
Verwenden Sie diese Formel und es funktioniert immer ohne Risse:
quelle
Fast alle Methoden müssen die Höhe angeben, aber oft haben wir keine Höhen.
Hier ist also ein CSS3 3-Zeilen-Trick, bei dem die Höhe nicht bekannt sein muss.
Es wird sogar in IE9 unterstützt.
mit seinen Herstellerpräfixen:
Quelle: http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/
quelle
Auf zwei Arten können Sie Elemente vertikal und horizontal ausrichten
1. Bootstrap 4.3.X.
zur vertikalen Ausrichtung:
d-flex align-items-center
zur horizontalen Ausrichtung:
d-flex justify-content-center
2. CSS3
quelle
Mein Trick besteht darin, eine Tabelle mit 1 Zeile und 1 Spalte in das div einzufügen, 100% der Breite und Höhe festzulegen und die Eigenschaft vertikal auszurichten: Mitte.
Geige: http://jsfiddle.net/joan16v/sbqjnn9q/
quelle
# 3 Möglichkeiten, um zentrales untergeordnetes Div in einem übergeordneten Div zu machen
Transform / Translate-Methode
Demo
quelle
Wenn Sie CSS zur vertikalen Mitte verwenden, können Sie die äußeren Container wie eine Tabelle und den Inhalt wie eine Tabellenzelle wirken lassen. In diesem Format bleiben Ihre Objekte zentriert. :) :)
Ich habe zum Beispiel mehrere Objekte in JSFiddle verschachtelt, aber die Kernidee lautet wie folgt:
HTML
CSS
Beispiel für mehrere Objekte:
HTML
CSS
Ergebnis
https://jsfiddle.net/martjemeyer/ybs032uc/1/
quelle
Standardmäßig ist h1 ein Blockelement und wird in der Zeile nach dem ersten Bild gerendert. Das zweite Bild wird in der Zeile nach dem Block angezeigt.
Um dies zu verhindern, können Sie das h1 so einstellen, dass es ein Inline-Flussverhalten aufweist:
Um das Bild absolut innerhalb des Div zu positionieren , müssen Sie das enthaltende Div auf eine "bekannte Größe" einstellen, bevor dies ordnungsgemäß funktioniert. Nach meiner Erfahrung müssen Sie auch das Positionsattribut von der Standardeinstellung ändern - position: relative funktioniert für mich:
Wenn dies funktioniert, sollten Sie versuchen, die Attribute für Höhe, Breite und Position schrittweise aus div.header zu entfernen, um die minimal erforderlichen Attribute zu erhalten, um den gewünschten Effekt zu erzielen.
AKTUALISIEREN:
Hier ist ein vollständiges Beispiel, das unter Firefox 3 funktioniert:
quelle
Wir können eine CSS-Funktionsberechnung verwenden, um die Größe des Elements zu berechnen und dann das untergeordnete Element entsprechend zu positionieren.
Beispiel HTML:
Und CSS:
Hier erstellte Demo: https://jsfiddle.net/xnjq1t22/
Diese Lösung funktioniert gut mit reaktionsschnellen
div
height
undwidth
auch.Hinweis: Die Calc-Funktion wurde nicht auf Kompatibilität mit alten Browsern getestet.
quelle
Bis heute habe ich eine neue Problemumgehung gefunden, um mehrere Textzeilen in einem Div mithilfe von CSS3 vertikal auszurichten (und ich verwende auch das Bootstrap v3-Rastersystem, um die Benutzeroberfläche zu verschönern).
Nach meinem Verständnis muss das unmittelbare übergeordnete Element eines Textes, der ein Element enthält, eine gewisse Höhe haben. Ich hoffe es wird dir auch helfen. Vielen Dank!
quelle
Meine neue Lieblingsmethode ist ein CSS-Raster:
quelle
Verwenden Sie einfach einen einzelligen Tisch im div! Stellen Sie einfach die Zellen- und Tabellenhöhe auf 100% ein und Sie können die vertikale Ausrichtung verwenden.
Ein einzelliger Tisch im Div übernimmt die vertikale Ausrichtung und ist abwärtskompatibel zur Steinzeit!
quelle
Ich verwende die folgende Lösung (ohne Positionierung und ohne Linienhöhe) seit über einem Jahr. Sie funktioniert auch mit IE 7 und 8.
quelle
Dies ist meine persönliche Lösung für ein i-Element in einem div
JSFiddle-Beispiel
HTML
CSS
quelle
Bei mir hat es so funktioniert:
Das "a" -Element wurde mithilfe von Bootstrap-Klassen in eine Schaltfläche konvertiert und ist jetzt vertikal in einem äußeren "div" zentriert.
quelle
quelle
Nur das:
Ein einzelliger Tisch im Div übernimmt die vertikale Ausrichtung und ist abwärtskompatibel zur Steinzeit!
quelle
quelle
Hier ist nur ein weiterer (reaktionsfähiger) Ansatz:
http://jsfiddle.net/herrfischerhamburg/JcVxz/
quelle
Ich bin ein .NET-Typ, der gerade mit Webprogrammierung angefangen hat. Ich habe kein CSS verwendet (na ja, ein bisschen). Ich habe ein wenig JavaScript verwendet, um die vertikale Zentrierung zusammen mit der .css-Funktion von jQuery durchzuführen.
Ich poste nur alles von meinem Test. Es ist wahrscheinlich nicht übermäßig elegant, aber es funktioniert soweit.
quelle
...
oder CSS
Browser-Abdeckung
quelle
table-cell
, wasvertical-align: middle;
funktioniert. Noch besser ist, dass es ohne verschachtelten Wrapper / Buffer Div funktioniert. Es funktioniert sowohl für Text als auch für Bilder (oder für beide), und Sie müssen die Positionseigenschaften nicht ändern.