Você pode substituir align-items
com align-self
para um item de flex. Estou procurando uma maneira de substituir justify-content
um item flexível.
Se você tinha um contêiner flexbox com justify-content:flex-end
, mas deseja o primeiro item justify-content: flex-start
, como isso pode ser feito?
Esta resposta foi melhor respondida por este post: https://stackoverflow.com/a/33856609/269396
auto
margens. Ver caixa nº 26 aqui: stackoverflow.com/a/33856609/3597276Respostas:
Parece não haver
justify-self
, mas você pode obter uma configuração de resultado semelhante apropriadamargin
paraauto
¹. Por exemplo. paraflex-direction: row
(padrão), você deve definirmargin-right: auto
para alinhar o filho à esquerda.Behavior Esse comportamento é definido pela especificação do Flexbox .
fonte
justify-self
pode não ter nada a ver,flexbox
mas é usado com,css grids
mas não tenho certeza. Não consigo fazê-lo funcionar no Chrome com o flexbox.AFAIK, não há propriedades para isso nas especificações, mas aqui está um truque que estou usando: defina o elemento container (aquele com
display:flex
) comojustify-content:space-around
Em seguida, adicione um elemento extra entre o primeiro e o segundo item e defina-oflex-grow:10
(ou alguns outro valor que funcione com sua configuração)Editar: se os itens estiverem bem alinhados, é uma boa ideia adicionar
flex-shrink: 10;
ao elemento extra também, para que o layout responda adequadamente em dispositivos menores.fonte
min-width: 0
Se você não estiver realmente restrito a manter todos esses elementos como nós irmãos, poderá agrupar os que vão juntos em outra caixa flexível padrão e fazer com que o contêiner use espaço entre eles.
Ou, se você estivesse fazendo a mesma coisa com flex-start e flex-in-reverse, basta trocar a ordem do contêiner flex-default e do filho solitário.
fonte
Parece que
justify-self
está chegando aos navegadores em breve . Já existe um artigo sobre o MDN . No momento da redação deste artigo, o suporte ao navegador é ruim.Quanto à margem-solução: tenho uma grade Flexbox com lacunas. Ainda não existe
flex-gap
propriedade com o Flexbox. Então, para as sarjetas, eu estou usando almofadas e margens, por issomargin: auto
precisa substituir as outras margens ...fonte
In flexbox layouts, this property is ignored
justify-self
faz o trabalho em umdisplay: grid
recipiente. É recente como flexbox, então permite o posicionamento rico comoalign-items
,align-self
, bem como algumas características adicionais como o que precisamos aqui,justify-self
. O que eu recomendo é usar o flexbox sempre que suficiente, mas se estiver faltando alguma coisa, a grade provavelmente terá o que você está procurando. (por exemplo: alinhamento fácil de um filho para o centro-x e do centro-y, e outro para o centro-x para a direita x - o flexbox possuimargin-left: auto
esquerda + direita, mas não centro + direita) Exemplo: stackoverflow.com/a/57128453 / 2441655Para as situações em que a largura dos itens que você quer
flex-end
é conhecido, você pode definir a sua flex para "0 0 ## px" e defina o item que desejaflex-start
comflex:1
Isso fará com que o pseudo
flex-start
item preencha o contêiner, apenas formate-o para o quetext-align:left
for.fonte
Resolvi um caso semelhante, definindo o estilo do item interno como
margin: 0 auto
.Situação: Meu menu geralmente contém três botões; nesse caso, eles precisam estar
justify-content: space-between
. Mas quando houver apenas um botão, ele será agora alinhado ao centro, e não à esquerda.fonte