Existe uma maneira mais flexível de alinhar o "Contato" do que usar 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>
Respostas:
Aqui está. Coloque
justify-content: space-between
no recipiente flexível.fonte
justify-content: flex-end
.c::after
pseudo-elemento. Na minha experiência,margin-left: auto;
é o caminho a percorrer.flex-flow: row-reverse;
Uma abordagem mais flexível seria usar uma
auto
margem esquerda (os itens flexíveis tratam as margens automáticas de maneira um pouco diferente do que quando usadas em um contexto de formatação de bloco).Violino atualizado:
fonte
flex
,order
, etc).margin-left: auto;
estilo.margin-left: auto;
.Se você quiser usar o flexbox para isso, poderá fazê-lo (
display: flex
no contêiner,flex: 1
nos itens e assim portext-align: right
diante.c
):... ou alternativamente (ainda mais simples), se os itens não precisarem ser atendidos, você poderá usar
justify-content: space-between
o contêiner e removertext-align
completamente as regras:Aqui está uma demonstração no Codepen para permitir que você tente rapidamente o acima.
fonte
space-between
era exatamente o que eu procurava, obrigado!Você também pode usar um preenchimento para preencher o espaço restante.
Atualizei a solução com 3 versões diferentes. Isso ocorre devido à discussão sobre a validade do uso de um elemento de preenchimento adicional. Se você executar o código cortado, verá que todas as soluções fazem coisas diferentes. Por exemplo, definir a classe de preenchimento no item b fará com que esse item preencha o espaço restante. Isso tem o benefício de que não há espaço "morto" que não seja clicável.
fonte
justify-content: space-between
é "muito" css, sério? Não há necessidade de mais comentários (mas se você quiser - bem-vindo ao bate-papo). Esta resposta tem o direito de estar aqui, porque é uma solução. Mas definitivamente não é o ideal. Idk, talvez você não tenha notado, mas a maioria dos css de outras respostas são OP e as respostas realmente reduzem (um pouco) a quantidade de css do autor. Esta resposta não tem menos css do que outras (não funcionará sem o css do OP - jsfiddle.net/63ma3b56 ). Mas tem mais um elemento html.Ou você pode simplesmente usar
justify-content: flex-end
fonte
justify-content
atributo é um atributo do contentor-Flex, consulte cheatsheet flexy de Chris Coyer: css-tricks.com/snippets/css/a-guide-to-flexboxTão fácil quanto
fonte
Adicione a seguinte classe CSS à sua folha de estilo:
Coloque um elemento vazio entre o elemento à esquerda e o elemento que você deseja alinhar à direita:
<span class="my-spacer"></span>
fonte
Se você precisar que um item seja alinhado à esquerda (como um cabeçalho), mas vários itens alinhados à direita (como 3 imagens), faça algo assim:
Veja como será isso (apenas CSS relevante foi incluído no snippet acima)
fonte
'justify-content: flex-end' funcionou no contêiner de caixa de preço.
fonte
Acho que adicionar 'justify-content: flex-end' ao contêiner flex resolve o problema, enquanto 'justify-content: space-between' não faz nada.
fonte
Para aqueles que usam layout angular e flex, use o seguinte no contêiner de itens flex:
<div fxLayout="row" fxLayoutAlign="flex-end">
Consulte os documentos fxLayoutAlign aqui e os documentos completos do fxLayout aqui .
fonte
Exemplo de código com base na resposta do TetraDev
Imagens à direita:
Imagens à esquerda:
fonte