Eu tenho 2 divs lado a lado em um flexbox. A mão direita deve sempre ter a mesma largura, e eu quero que a mão esquerda pegue o espaço restante. Mas não será, a menos que eu defina especificamente sua largura.
Portanto, no momento, ele está definido como 96%, o que parece bom até você realmente apertar a tela - então a div direita fica um pouco faminta do espaço necessário.
Acho que poderia deixar como está, mas parece errado - como se houvesse uma maneira de dizer:
o certo é sempre o mesmo; você à esquerda - você recebe tudo o que resta
.ar-course-nav {
cursor: pointer;
padding: 8px 12px 8px 12px;
border-radius: 8px;
}
.ar-course-nav:hover {
background-color: rgba(0, 0, 0, 0.1);
}
<br/>
<br/>
<div class="ar-course-nav" style="display:flex; justify-content:space-between;">
<div style="width:96%;">
<div style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
<strong title="Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!">
Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!
</strong>
</div>
<div style="width:100%; display:flex; justify-content:space-between;">
<div style="color:#555555; margin-right:8px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;" title="A really really really really really really really really really really really long department name">
A really really really really really really really really really really really long department name
</div>
<div style="color:#555555; text-align:right; white-space:nowrap;">
Created: 21 September 2016
</div>
</div>
</div>
<div style="margin-left:8px;">
<strong>></strong>
</div>
</div>
flex-grow: 1
não estava tendo os mesmos efeitos queflex: 1
. Talvez você saiba por que é diferente? (I fixa o meu problema com o último, thx)flex-grow: 1
, aflex-basis
propriedade permanece emauto
, seu valor padrão. Comflex: 1
, aflex-basis
propriedade muda para0
. Veja minha resposta aqui para uma revisão em profundidade: stackoverflow.com/q/43520932/3597276 @WhGandalfBasicamente, eu estava tentando fazer com que meu código tivesse uma seção do meio em uma 'linha' para se ajustar automaticamente ao conteúdo dos dois lados (no meu caso, um separador de linhas pontilhadas). Como o @Michael_B sugeriu, a chave está usando
display:flex
no contêiner de linha e, pelo menos, certificando-se de que seu contêiner do meio na linha tenha umflex-grow
valor pelo menos 1 maior que os contêineres externos (se contêineres externos não tiveremflex-grow
propriedades aplicadas, contêiner intermediário) só precisa de 1 paraflex-grow
).Aqui está uma foto do que eu estava tentando fazer e um exemplo de código de como eu o resolvi.
Editar: a borda inferior pontilhada provavelmente parecerá estranha, dependendo de como o navegador a exibir. Eu, pessoalmente, recomendo usar um SVG de círculo preto como uma imagem de fundo repetida, adequadamente dimensionada e posicionada na parte inferior do contêiner do meio. Adicionarei esta solução alternativa quando eu tiver tempo.
fonte