Estou tentando configurar um layout de caixa flexível com três colunas em que as colunas esquerda e direita têm uma largura fixa e a coluna central flexiona para preencher o espaço disponível.
Apesar de configurar as dimensões das colunas, elas ainda parecem encolher à medida que a janela diminui.
Alguém sabe como fazer isso?
Outra coisa que precisarei fazer é ocultar a coluna da direita com base na interação do usuário. Nesse caso, a coluna da esquerda ainda manteria sua largura fixa, mas a coluna central preencheria o restante do espaço.
#container {
display: flex;
justify-content: space-around;
align-items: stretch;
max-width: 1200px;
}
.column.left {
width: 230px;
}
.column.right {
width: 230px;
border-left: 1px solid #eee;
}
.column.center {
border-left: 1px solid #eee;
}
<div id="container">
<div class="column left">
<p>Anxiety was a blog series that ran in the New York Times Opinion section from January 2012 to July 2013. It featured essays, fiction, and art by a wide range of contributors that explored anxiety from scientific, literary, and artistic perspectives.</p>
</div>
<div class="column center">
<img src="http://i.imgur.com/60PVLis.png" width="100" height="100" alt="">
</div>
<div class="column right">
Balint Zsako
<br/> Someone’s Knocking at My Door
<br/> 01.12.13
</div>
</div>
Aqui está um JSFiddle: http://jsfiddle.net/zDd2g/185/
Respostas:
Em vez de usar
width
(o que é uma sugestão ao usar o flexbox), você pode usar oflex: 0 0 230px;
que significa:0
= não cresça (abreviação deflex-grow
)0
= não encolher (abreviação deflex-shrink
)230px
= iniciar às230px
(abreviação deflex-basis
)o que significa: sempre seja
230px
.Veja violino , obrigado @TylerH
Ah, e você não precisa do
justify-content
ealign-items
aqui.fonte
flex-grow
definida (como digamos 1). Violino atualizado .flex-grow: 1
ainda é necessário para a coluna de fluido no Chrome 53. Caso contrário, não levaria o resto da largura. Suponho que a resposta deva considerar esse fato.flex: 0 0 200px
age da mesma forma quewidth: 200px; flex-shrink: 0
.Uma configuração inicial de um contêiner flexível é
flex-shrink: 1
. É por isso que suas colunas estão encolhendo.Não importa qual largura você especificar ( poderia ser
width: 10000px
), comflex-shrink
a largura especificada pode ser ignorada e os itens flexíveis são impedidos de transbordar o contêiner.Você precisará desativar o encolhimento. Aqui estão algumas opções:
OU
OU, conforme recomendado pela especificação:
Mais detalhes aqui: Quais são as diferenças entre base flexível e largura?
Tente o seguinte:
Isso permitirá que a coluna central consuma o espaço disponível, incluindo o espaço de seus irmãos quando eles forem removidos.
Fiddle revisado
fonte
flex: 1;
ao centrodiv
foi suficiente, obrigado.A compatibilidade com navegadores mais antigos pode ser uma chatice, por isso é aconselhável.
Se isso não for um problema, vá em frente. Execute o trecho. Vá para a visualização de página inteira e redimensione. O Center será redimensionado sem alterações nas divs esquerda ou direita.
Altere os valores esquerdo e direito para atender às suas necessidades.
Obrigado.
Espero que isto ajude.
fonte