Ich versuche, den Inhalt meiner Registerkarten vertikal zu zentrieren, aber wenn ich den CSS-Stil hinzufüge display:inline-flex
, verschwindet die horizontale Textausrichtung.
Wie kann ich beide Textausrichtungen x und y für jede meiner Registerkarten vornehmen?
* { box-sizing: border-box; }
#leftFrame {
background-color: green;
position: absolute;
left: 0;
right: 60%;
top: 0;
bottom: 0;
}
#leftFrame #tabs {
background-color: red;
position: absolute;
top: 0;
left: 0;
right: 0;
height: 25%;
}
#leftFrame #tabs div {
border: 2px solid black;
position: static;
float: left;
width: 50%;
height: 100%;
text-align: center;
display: inline-flex;
align-items: center;
}
<div id=leftFrame>
<div id=tabs>
<div>first</div>
<div>second</div>
</div>
</div>
Antworten:
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 sicherstellen, dass die
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 Sie auchmargin: 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 a einstellen
line-height
Wert für das untergeordnete Element , 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 .
quelle
display: flex
im übergeordneten undalign-self: center
im untergeordneten Element .Wenn CSS3 eine Option ist (oder Sie einen Fallback haben), können Sie transform verwenden:
Im Gegensatz zum ersten Ansatz oben möchten Sie nicht left: 50% mit der negativen Übersetzung verwenden, da in IE9 + ein Überlauffehler vorliegt. Wenn Sie einen positiven rechten Wert verwenden, werden keine horizontalen Bildlaufleisten angezeigt.
quelle
transform: translateX(50%) translateY(50%);
stattdessen sein. Die obige Transformation ist gemäß den Mozilla-Transformationsdokumenten syntaktisch nicht korrekt .transform
Werte, die einen X- und einen Y-Wert annehmen können , haben eine Grundfunktion für beide und spezielle Funktionen für nur einen.Der beste Weg, eine Box sowohl vertikal als auch horizontal zu zentrieren, besteht darin, zwei Container zu verwenden:
Der Außenbehälter:
display: table;
Der innere Behälter:
display: table-cell;
vertical-align: middle;
text-align: center;
Das Inhaltsfeld:
display: inline-block;
Demo:
Siehe auch diese Geige !
Zentrierung in der Mitte der Seite:
Fügen Sie Ihrem Outher-Container Folgendes hinzu, um Ihren Inhalt in der Mitte Ihrer Seite zu zentrieren:
position : absolute;
width: 100%;
height: 100%;
Hier ist eine Demo dafür:
Siehe auch diese Geige !
quelle
So verwenden Sie zwei einfache Flex-Eigenschaften, um n Divs auf der 2-Achse zu zentrieren:
align-items: center
zentriert die Blöcke vertikaljustify-content: space-around
verteilt den freien horizontalen Raum um die Divsquelle
Führen Sie dieses Code-Snippet aus und sehen Sie ein vertikal und horizontal ausgerichtetes div.
quelle
Die einfachste und sauberste Lösung für mich ist die Verwendung der CSS3-Eigenschaft "transform":
quelle
Das erste Kind wird vertikal und horizontal in der Mitte ausgerichtet
quelle
um die Div auf einer Seite zu zentrieren check the fiddle link
Update Eine weitere Option ist die Verwendung der Flexbox check the fiddle link
quelle
Nachfolgend finden Sie den Flex-Box-Ansatz, um das gewünschte Ergebnis zu erzielen
quelle
Ein anderer Ansatz ist die Verwendung von Tabelle:
quelle
Um ein Element vertikal und horizontal zu zentrieren, können wir auch die unten genannten Eigenschaften verwenden.
Diese CSS-Eigenschaft richtet Elemente vertikal aus und akzeptiert die folgenden Werte:
Flex-Start : Die Elemente werden an der Oberseite des Containers ausgerichtet.
Flex-End : Die Elemente werden am Boden des Behälters ausgerichtet.
Mitte : Die Elemente werden in der vertikalen Mitte des Containers ausgerichtet.
Grundlinie : Elemente werden an der Grundlinie des Containers angezeigt.
dehnen : Die Gegenstände werden gedehnt, um in den Behälter zu passen.
Diese CSS-Eigenschaft rechtfertigen den Inhalt , der Elemente horizontal ausrichtet und die folgenden Werte akzeptiert:
Flex-Start : Die Elemente werden auf der linken Seite des Containers ausgerichtet.
Flex-End : Die Elemente werden auf der rechten Seite des Containers ausgerichtet.
Mitte : Die Elemente werden in der Mitte des Containers ausgerichtet.
Zwischenraum : Elemente werden mit gleichem Abstand zwischen ihnen angezeigt.
Leerzeichen : Elemente werden mit gleichem Abstand um sie herum angezeigt.
quelle
Grid-CSS-Ansatz
quelle
Folgende neue und einfache Lösung muss befolgt werden:
quelle
quelle
Machen Sie einfach oben, unten, links und rechts auf 0.
quelle
Sie können dies mit CSS (Ihr Element
display:inline-grid
+grid-auto-flow: row;
) Grid und Flex Box (übergeordnetes Element) erreichendisplay:flex;
) erreichen.Siehe unten Ausschnitt
quelle
Quelle Link -
Weitere Methoden finden Sie hier
quelle
Der einfachste Weg, ein Div sowohl vertikal als auch horizontal zu zentrieren, ist wie folgt:
Noch ein Beispiel :
quelle
Dies ist ein verwandtes Problem, das bei der Suche möglicherweise auf diese Seite gelangt: Wenn ich ein Div für ein (100 Pixel großes Quadrat) "wartendes" animiertes GIF zentrieren möchte, verwende ich:
quelle
Wenn Sie es bevorzugen ohne :
Flexbox / Grid / Table
oder ohne :
Vertical-Align: Middle
Du kannst tun:
HTML
CSS
quelle
Das sollte funktionieren
quelle
Einfach! Verwenden Sie Display Flex für Container und Rand Auto für Text !!!!
Demo: https://jsfiddle.net/ay95f08g/
Getestet: Safari, Chrome, Firefox und Opera auf MacOs Mojave. (alle letzten Updates am 25. Februar 2019)
quelle
Es gibt viele, die das Gleiche tun sollten. Sie können die folgende Methode verwenden, um das Div in der Mitte der Seite zu erstellen.
Prost !
quelle
Der einfachste
flexbox
Ansatz:Der einfachste Weg, ein einzelnes Element vertikal und horizontal zu zentrieren, besteht darin, es zu einem flexiblen Element zu machen und seinen Rand auf Folgendes festzulegen
auto
:Diese Erweiterung der Ränder in jede Richtung drückt das Element genau in die Mitte seines Behälters.
quelle