Możesz zastąpić align-items
z align-self
do elastycznego elementu. Szukam sposobu na zastąpienie justify-content
elementu flex.
Jeśli miałeś pojemnik Flexbox justify-content:flex-end
, ale chcesz, aby był to pierwszy elementjustify-content: flex-start
, jak można to zrobić?
Najlepiej na to odpowiedział ten post: https://stackoverflow.com/a/33856609/269396
auto
marginesów. Zobacz ramkę nr 26 tutaj: stackoverflow.com/a/33856609/3597276Odpowiedzi:
Wydaje się
justify-self
, że tak nie jest , ale można osiągnąć podobne ustawienie wyników odpowiedniemargin
dlaauto
¹. Np. dlaflex-direction: row
(domyślnie) powinieneś ustawićmargin-right: auto
wyrównanie dziecka do lewej.¹ To zachowanie jest zdefiniowane w specyfikacji Flexbox .
źródło
justify-self
może nie mieć z tym nic wspólnego,flexbox
ale raczej jest używany,css grids
ale nie jestem pewien. Wydaje mi się, że nie mogę go uruchomić w Chrome z Flexboksem.AFAIK nie ma takiej właściwości w specyfikacjach, ale oto sztuczka, której używałem: ustaw element kontenera (ten z
display:flex
), abyjustify-content:space-around
następnie dodać dodatkowy element między pierwszym a drugim elementem i ustaw go naflex-grow:10
(lub niektóre inna wartość, która działa z twoją konfiguracją)Edycja: jeśli elementy są ściśle wyrównane, dobrym pomysłem jest również dodanie
flex-shrink: 10;
do dodatkowego elementu, aby układ odpowiednio reagował na mniejszych urządzeniach.źródło
min-width: 0
Jeśli tak naprawdę nie jesteś ograniczony do zachowania tych wszystkich elementów jako węzłów rodzeństwa, możesz owinąć te, które pasują do siebie, w innym domyślnym polu elastycznym, a kontener obu będzie używał spacji między nimi.
Lub jeśli robisz to samo z Flex-Start i Flex-End Reverse, po prostu zamienisz kolejność domyślnego kontenera Flex i samotnego dziecka.
źródło
Wygląda na
justify-self
to, że wkrótce będzie dostępny w przeglądarkach . Jest już artykuł na ten temat na MDN . W chwili pisania tego tekstu obsługa przeglądarki jest słaba.Jeśli chodzi o rozwiązanie marży: mam siatkę Flexbox z przerwami. Brak
flex-gap
Flex (jeszcze?) W Flexbox. Więc dla rynien używam obić i marginesów, więc muszęmargin: auto
zastąpić inne marginesy ...źródło
In flexbox layouts, this property is ignored
justify-self
nie pracę wdisplay: grid
pojemniku. To ostatnie jak schematu flexbox, więc umożliwia pozycjonowanie jak bogatyalign-items
,align-self
jak również pewne dodatkowe funkcje, takie jak ten, musimy tutajjustify-self
. Zalecam korzystanie z Flexboksa wszędzie tam, gdzie jest to wystarczające, ale jeśli czegoś brakuje, grid najprawdopodobniej ma to, czego szukasz. (np. łatwe wyrównanie jednego dziecka do środka-x i środka-y, a drugiego do prawego-x środka-y - Flexbox mamargin-left: auto
dla łatwego lewego + prawego, ale nie środkowego + prawego) Przykład: stackoverflow.com/a/57128453 / 2441655W sytuacjach, gdy
flex-end
znana jest szerokość elementów, które chcesz , możesz ustawić ich flex na „0 0 ## px” i ustawić żądany element zaflex-start
pomocąflex:1
Spowoduje to, że pseudo
flex-start
element wypełni pojemnik, po prostu sformatuj gotext-align:left
lub cokolwiek innego.źródło
Rozwiązałem podobny przypadek, ustawiając styl wewnętrznego przedmiotu na
margin: 0 auto
.Sytuacja: Moje menu zwykle zawiera trzy przyciski, w takim przypadku muszą być
justify-content: space-between
. Ale gdy jest tylko jeden przycisk, będzie on teraz wyśrodkowany w środku zamiast w lewo.źródło