Stellen Sie sich das folgende Layout vor, in dem die Punkte den Abstand zwischen den Feldern darstellen:
[Left box]......[Center box]......[Right box]
Wenn ich die rechte Box entferne, möchte ich, dass sich die mittlere Box immer noch in der Mitte befindet, wie folgt:
[Left box]......[Center box].................
Das gleiche gilt, wenn ich die linke Box entfernen würde.
................[Center box].................
Wenn der Inhalt in der mittleren Box länger wird, nimmt er so viel verfügbaren Speicherplatz wie nötig ein, während er zentriert bleibt. Die linke und rechte Feld wird nie schrumpfen und somit , wenn , wo kein Platz links overflow:hidden
und text-overflow: ellipsis
kommt in der Tat um den Inhalt zu brechen;
[Left box][Center boxxxxxxxxxxxxx][Right box]
All dies ist meine ideale Situation, aber ich habe keine Ahnung, wie ich diesen Effekt erzielen kann. Denn wenn ich so eine flexible Struktur erstelle:
.parent {
display : flex; // flex box
justify-content : space-between; // horizontal alignment
align-content : center; // vertical alignment
}
Wenn das linke und das rechte Feld genau die gleiche Größe haben, erhalte ich den gewünschten Effekt. Wenn jedoch einer der beiden eine andere Größe hat, ist die zentrierte Box nicht mehr wirklich zentriert.
Gibt es jemanden, der mir helfen kann?
Aktualisieren
A justify-self
wäre schön, das wäre ideal:
.leftBox {
justify-self : flex-start;
}
.rightBox {
justify-self : flex-end;
}
flexbox
funktionieren. Sie könnten eine andere Methode ausprobieren.justify-self
haben heute früher darüber gesprochen, daher könnte dies interessant sein: stackoverflow.com/questions/32551291/…Antworten:
Hier ist eine Methode, bei der Flexbox verwendet wird, um das mittlere Element unabhängig von der Breite der Geschwister zu zentrieren.
Hauptmerkmale:
Verwenden Sie verschachtelte Flex-Container und
auto
Ränder:So funktioniert das:
.container
) ist ein Flex-Container..box
) ist jetzt ein flexibles Element..box
Artikel wird angegeben,flex: 1
um den Containerraum gleichmäßig zu verteilen ( weitere Details ).justify-content: center
.span
Element ein zentriertes Flex-Element.auto
Ränder, um die äußerenspan
s nach links und rechts zu verschieben.Sie können auch ausschließlich auf Ränder verzichten
justify-content
und diese verwendenauto
.Aber
justify-content
können hier arbeiten , weil dieauto
Margen immer Vorrang haben.quelle
width
spezifizierenwhite-space: nowrap
war das letzte Puzzleteil, um zu verhindern, dass Text umbrochen wird, wenn der Bereich zu klein wird.flex: 1
den ersten und den letzten ein. Dadurch wachsen sie gleichmäßig, um den verfügbaren Platz des mittleren zu füllen.Wenn jedoch das erste oder letzte Element einen breiten Inhalt hat, wächst dieses flexible Element aufgrund des neuen
min-width: auto
Anfangswertes ebenfalls.Hinweis Chrome scheint dies nicht richtig zu implementieren. Sie können jedoch
min-width
auf-webkit-max-content
oder einstellen-webkit-min-content
und es wird auch funktionieren.Nur in diesem Fall wird das mittlere Element aus der Mitte herausgeschoben.
quelle
Anstatt standardmäßig Flexbox zu verwenden, wird die Verwendung von Grid in zwei CSS-Zeilen ohne zusätzliches Markup innerhalb der untergeordneten Elemente der obersten Ebene gelöst.
HTML:
CSS:
Flexbox rockt, sollte aber nicht die Antwort auf alles sein. In diesem Fall ist das Gitter eindeutig die sauberste Option.
Sogar einen Codepen für Ihr Testvergnügen erstellt: https://codepen.io/anon/pen/mooQOV
quelle
flex
für alles geben kann. Mein einziger Einwand ist, dass die vertikale Ausrichtung mit flex (align-items: center
) einfacher wird, falls Ihre Artikel unterschiedliche Höhen haben und ausgerichtet werden müssenSie können dies folgendermaßen tun:
quelle
Hier ist eine Antwort, die Raster anstelle von Flexbox verwendet. Diese Lösung erfordert keine zusätzlichen Enkelelemente im HTML wie die akzeptierte Antwort. Und es funktioniert auch dann richtig, wenn der Inhalt auf einer Seite lang genug ist, um in die Mitte zu gelangen, im Gegensatz zur Rasterantwort von 2019.
Das einzige, was diese Lösung nicht tut, ist, Auslassungspunkte anzuzeigen oder den zusätzlichen Inhalt im mittleren Feld auszublenden, wie in der Frage beschrieben.
quelle
Sie können auch diese einfache Methode verwenden, um die exakte Mittelausrichtung für das mittlere Element zu erreichen:
Codepen: https://codepen.io/ErAz7/pen/mdeBKLG
quelle
Hier ist eine andere Möglichkeit, dies
display: flex
bei Eltern und Kindern zu tun :quelle