Wie Rechtsbündig flex-Element?
Gibt es eine mehr flexbox-ish Weg nach rechts ausrichten "Kontakt", als position: absolute
?
CSS:
.main { display: flex; }
.a, .b, .c { background: #efefef; border: 1px solid #999; }
.b { flex: 1; text-align: center; }
.c { position: absolute; right: 0; }
HTML:
<h2>With title</h2>
<div class="main">
<div class="a"><a href="#">Home</a></div>
<div class="b"><a href="#">Some title centered</a></div>
<div class="c"><a href="#">Contact</a></div>
</div>
<h2>Without title</h2>
<div class="main">
<div class="a"><a href="#">Home</a></div>
<!--<div class="b"><a href="#">Some title centered</a></div>-->
<div class="c"><a href="#">Contact</a></div>
</div>
- Sie können float rechts, aber es ist die gleiche Art und Weise...! Der beste Weg ist die Verwendung von display-Tabelle mit text-align.
- Sicher, wenn das ist besser. Immer noch Probleme mit der rechts-Angleichung "Kontakt" wenn: jsfiddle.net/vqDK9/1
- Ich aktualisiert Ihre Geige jsfiddle.net/vqDK9/2
- Hier sind mindestens zwei Wege dies zu tun: stackoverflow.com/a/33856609/3597276
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier gehen Sie. Set
justify-content: space-between
auf der flex-container.CSS:
HTML:
justify-content: flex-end
.c::after
pseudo-element. In meiner Erfahrungmargin-left: auto;
ist der Weg zu gehen.flex-flow: row-reverse;
.container { display: flex; flex-flow: row-reverse; }
justify-content: space-between;
nur Leerzeichen raus die flex-Kinder.justify-content: flex-end
ist die Lösung, die für mich gearbeitetMehr flex Ansatz wäre, eine
auto
linken Rand (flex-Elemente behandeln auto-Margen ein bisschen anders, als wenn in einen block formatting context).Aktualisiert fiddle:
CSS:
HTML:
flex
,order
, etc).justify-content: space-between;
nur erreicht, dass Sie wollen, wenn Sie nur 2 items im flex-container (erste Position wäre auf der linken Seite und das zweite wäre das richtige). Aber für mehr als 2 Elemente, zu richten einige auf der rechten Seite, das ist der richtige Ansatz!justify-content: space-between;
alle Elemente haben die gleiche Breite standardmäßig. imgur.com/a/Fhvyhmargin-left: auto;
Stil.margin-left: auto;
.Wenn Sie verwenden möchten flexbox für diese, Sie sollten in der Lage sein, dies zu tun (
display: flex
auf den container,flex: 1
auf die Elemente, undtext-align: right
auf.c
):...oder alternativ (noch einfacher), wenn die Gegenstände nicht zu treffen brauchen, können Sie
justify-content: space-between
auf den Behälter und entfernen Sie dietext-align
Regeln komplett:Hier ein demo auf Codepen, damit Sie schnell versuchen, die oben genannten.
space-between
war genau das, was ich suchte, danke!Können Sie auch mit einem Füllstoff zu füllen den übrigen Raum.
Habe ich aktualisiert, die Lösung mit 3 verschiedenen Versionen. Dies, weil die Diskussion der Gültigkeit der mit einem zusätzlichen Füller-element. Wenn Sie den code ausführen, Schnitt Sie sehen, dass alle Lösungen, die verschiedene Dinge tun. Zum Beispiel die Einstellung der Füllstoff-Klasse auf Position b stellen Sie dieses Element, füllen den übrigen Raum. Dies hat den Vorteil, dass es kein "Toter" Raum, der nicht anklickbar.
HTML:
Oder Sie konnte einfach
justify-content: flex-end
justify-content
Attribut ist ein Attribut der flex-container, siehe Chris Coyer ' s flexy cheatsheet: css-tricks.com/snippets/css/a-guide-to-flexboxSo einfach wie
Fügen Sie die folgende CSS-Klasse zu Ihrem stylesheet:
Stelle ein leeres element zwischen dem element auf der linken und das element, das Sie wünschen zu Recht-align:
<span class="my-spacer"></span>
Wenn Sie brauchen, ein Element zu Links ausgerichtet werden (wie z.B. der header), aber dann mehrere Elemente rechts ausgerichtet (wie 3 Bilder), dann würden Sie so etwas tun:
Hier ist, was das Aussehen (nur relavent CSS-wurde in snippet oben)
'justify-content: flex-end" - arbeitete in der Preis-box-container.
Ich finde, dass das hinzufügen von 'justify-content: flex-end", um die flex-container löst das problem, während 'justify-content: space-between" - nicht tun.
Für diejenigen, die sich mit Winkel-und Flex-Layout, verwenden Sie die folgende auf die flex-item-container:
<div fxLayout="row" fxLayoutAlign="flex-end">
Sehen fxLayoutAlign docs hier und die volle fxLayout docs hier.
Beispiel-code, basierend auf Antwort von TetraDev
Bilder rechts:
CSS:
HTML:
Bilder Links:
CSS:
HTML: