Flex con algunos anchos fijos

Siempre que necesito que dentro de un contendor flex, uno de los hijos tenga un ancho fijo y el otro ocupe el resto del espacio me surge el mismo problema.

Parece tan sencillo como ponerle a ese segundo item un flex-basis: auto. Pero sucede que el elemento con ancho automático no siempre entrará en la misma linea.

El otro día, tras darle muchas vueltas sin éxito, le consulté a Nabaroa, una crack que rápidamente me guió hacía la luz: «¿el padre tiene wrap?»

Y es que, aunque podría parecer que el item que tiene ancho automático debería coger el ancho sobrante en la misma linea, resulta que el wrap le hace irse siempre a la siguiente linea.

Al mismo tiempo, si en lugar de un ancho automático le asignamos un porcentaje, sí que estará en la misma linea mientras haya espacio suficiente, pero se irá a la siguiente linea antes de lo que podría esperarse.

Debería ocupar siempre la misma linea mientras que el ancho fijo del otro elemento no supere el porcentaje restante, ¿verdad? Pues no, lo baja a la siguiente linea antes de que esto suceda, según lo que he visto. Pero esto, es otra historia a investigar.

Lección aprendida

Si quieres que convivan siempre en la misma linea un elemento de ancho fijo con otro flexible, ponle flex-basis: auto a este último y flex-wrap: nowrap al padre.

El valor por defecto de un contenedor flex es nowrap, sin embargo, yo tengo la costumbre de poner al flex container en wrap ya que suele ser habitual necesitar que los flex items salten a la siguiente linea cuando no caben, y de ahí venía el problema.

¡Mil gracias Nabaroa por mostrarme la luz!

En el siguiente ejemplo se muestra lo que para mi es el ejemplo típico: un figure que queremos que sea circular, con lo cual necesita tener ancho y alto fijos, junto con un texto que ha de ocupar todo el ancho sobrante. Aquí vemos como se comporta en los distintos casos:

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Si desactivas esta cookie no podremos guardar tus preferencias. Esto significa que cada vez que visites esta web tendrás que activar o desactivar las cookies de nuevo.

Cookies de terceros

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.