Czy istnieje bardziej elastyczny sposób na wyrównanie do prawej strony „Kontakt” niż użycie position: absolute
?
.main { display: flex; }
.a, .b, .c { background: #efefef; border: 1px solid #999; }
.b { flex: 1; text-align: center; }
.c { position: absolute; right: 0; }
<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>
Odpowiedzi:
Proszę bardzo. Ustaw
justify-content: space-between
na elastycznym pojemniku.źródło
justify-content: flex-end
.c::after
pseudoelementu. Z mojego doświadczeniamargin-left: auto;
wynika, że jest to najlepsza droga.flex-flow: row-reverse;
Bardziej elastycznym podejściem byłoby użycie
auto
lewego marginesu (elementy elastyczne traktują automatyczne marginesy nieco inaczej niż w przypadku formatowania blokowego).Zaktualizowano skrzypce:
źródło
flex
,order
itp).margin-left: auto;
stylu.margin-left: auto;
.Jeśli chcesz do tego użyć Flexboksa, powinieneś być w stanie to zrobić (
display: flex
na kontenerze,flex: 1
na przedmiotach itext-align: right
dalej.c
):... lub alternatywnie (jeszcze prościej), jeśli przedmioty nie muszą się spełniać, możesz użyć
justify-content: space-between
na pojemniku itext-align
całkowicie usunąć reguły:Oto demo na Codepen, które pozwala szybko wypróbować powyższe.
źródło
space-between
było dokładnie to, czego szukałem, dzięki!Możesz również użyć wypełniacza, aby wypełnić pozostałe miejsce.
Zaktualizowałem rozwiązanie o 3 różne wersje. Jest to spowodowane dyskusją na temat ważności zastosowania dodatkowego elementu wypełniającego. Jeśli uruchomisz wycięty kod, zobaczysz, że wszystkie rozwiązania działają inaczej. Na przykład ustawienie klasy wypełniacza dla elementu b spowoduje, że ten element wypełni pozostałe miejsce. Ma to tę zaletę, że nie ma „martwej” przestrzeni, której nie można kliknąć.
źródło
justify-content: space-between
to poważnie? Nie potrzebujesz dalszych komentarzy (ale jeśli chcesz - witaj na czacie). Ta odpowiedź ma prawo być tutaj, ponieważ jest rozwiązaniem. Ale zdecydowanie nie optymalny. Idk, może nie zauważyłeś, ale większość css z innych odpowiedzi to OP i odpowiedzi faktycznie zmniejszają (trochę) ilość css autora. Ta odpowiedź nie ma mniej css niż inne (nie będzie działać bez css OP - jsfiddle.net/63ma3b56 ). Ale ma jeszcze jeden element HTML.Lub możesz po prostu użyć
justify-content: flex-end
źródło
justify-content
atrybut jest atrybutem elastycznego kontenera, zobacz elastyczny ściągawka Chrisa Coyera: css-tricks.com/snippets/css/a-guide-to-flexboxŁatwy jak
źródło
Dodaj następującą klasę CSS do swojego arkusza stylów:
Umieść pusty element między elementem po lewej stronie a elementem, który chcesz wyrównać do prawej:
<span class="my-spacer"></span>
źródło
Jeśli potrzebujesz wyrównania do lewej strony (jak nagłówek), a następnie wyrównania wielu elementów do prawej (jak 3 obrazy), możesz zrobić coś takiego:
Oto jak to będzie wyglądać (tylko fragment CSS został uwzględniony we fragmencie powyżej)
źródło
„justify-content: flex-end” działało w ramach kontenera cenowego.
źródło
Uważam, że dodanie „justify-content: flex-end” do elastycznego kontenera rozwiązuje problem, podczas gdy „justify-content: space-between” nic nie robi.
źródło
Dla tych, którzy używają Angular i Flex-Layout, użyj następujących elementów na kontenerze flex-item:
<div fxLayout="row" fxLayoutAlign="flex-end">
Zobacz fxLayout Wyrównaj dokumenty tutaj i pełne dokumenty fxLayout tutaj .
źródło
Przykładowy kod oparty na odpowiedzi TetraDev
Obrazy po prawej:
Obrazy po lewej:
źródło