Estoy tratando de configurar un diseño de caja flexible con tres columnas donde las columnas izquierda y derecha tienen un ancho fijo, y la columna central se flexiona para llenar el espacio disponible.
A pesar de establecer dimensiones para las columnas, todavía parecen encogerse a medida que se encoge la ventana.
Alguien sabe cómo lograr esto?
Una cosa adicional que tendré que hacer es ocultar la columna derecha en función de la interacción del usuario, en cuyo caso la columna izquierda aún mantendría su ancho fijo, pero la columna central ocuparía el resto del espacio.
#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>
Aquí hay un JSFiddle: http://jsfiddle.net/zDd2g/185/
Respuestas:
En lugar de usar
width
(que es una sugerencia cuando se usa flexbox), puede usar loflex: 0 0 230px;
que significa:0
= no crezca (abreviatura deflex-grow
)0
= no encoger (abreviatura deflex-shrink
)230px
= comenzar en230px
(abreviatura deflex-basis
)lo que significa: siempre se
230px
.Ver violín , gracias @TylerH
Ah, y no necesitas el
justify-content
yalign-items
aquí.fuente
flex-grow
definido (como se dice 1). Violín actualizado .flex-grow: 1
todavía es necesario para la columna de fluido en Chrome 53. De lo contrario, no tomaría el resto del ancho. Supongo que la respuesta debería considerar este hecho.flex: 0 0 200px
actúa igual quewidth: 200px; flex-shrink: 0
.Una configuración inicial de un contenedor flexible es
flex-shrink: 1
. Es por eso que sus columnas se están reduciendo.No importa qué ancho especifique ( podría ser
width: 10000px
), conflex-shrink
el ancho especificado se puede ignorar y se evita que los elementos flexibles desborden el contenedor.Deberá deshabilitar la reducción. Aquí hay algunas opciones:
O
O, según lo recomendado por la especificación:
Más detalles aquí: ¿Cuáles son las diferencias entre base flexible y ancho?
Prueba esto:
Esto permitirá que la columna central consuma el espacio disponible, incluido el espacio de sus hermanos cuando se eliminan.
Violín revisado
fuente
flex: 1;
al centrodiv
fue suficiente, gracias.La compatibilidad con los navegadores más antiguos puede ser una carga, así que ten cuidado.
Si eso no es un problema, adelante. Ejecute el fragmento. Ir a la vista de página completa y cambiar el tamaño. El centro se redimensionará sin cambios en los divs izquierdo o derecho.
Cambie los valores izquierdo y derecho para cumplir con sus requisitos.
Gracias.
Espero que esto ayude.
fuente