Cómo configurar una columna de ancho fijo con CSS flexbox

149

CodePen: http://codepen.io/anon/pen/RPNpaP .

Quiero que el cuadro rojo tenga solo 25 em de ancho cuando está en la vista de lado a lado; estoy tratando de lograr esto configurando el CSS dentro de esta consulta de medios:

@media all and (min-width: 811px) {...}

a:

.flexbox .red {
  width: 25em;
}

Pero cuando hago eso, esto sucede:

http://i.imgur.com/niFBrwt.png

¿Alguna idea de lo que estoy haciendo mal?

Ciencias
fuente

Respuestas:

331

Debe usar la propiedad flexo en flex-basislugar de width. Lea más sobre MDN .

.flexbox .red {
  flex: 0 0 25em;
}

La flexpropiedad CSS es una propiedad abreviada que especifica la capacidad de un elemento flexible para modificar sus dimensiones para llenar el espacio disponible. Contiene:

flex-grow: 0;     /* do not grow   - initial value: 0 */
flex-shrink: 0;   /* do not shrink - initial value: 1 */
flex-basis: 25em; /* width/height  - initial value: auto */

Una demostración simple muestra cómo establecer la primera columna en 50pxancho fijo.


Vea el codepen actualizado según su código.

Pegatinas
fuente
22
No me di cuenta de que tenía que anular flex-shrink, gracias, buena respuesta.
Paul Redmond
No se pudo obtener la base flexible: automático para trabajar hasta que me di cuenta de que la cuadrícula de mi biblioteca de componentes (Semantic UI React) tenía una regla CSS deshonesta que configuraba el ancho predeterminado de la columna 😅 medium.freecodecamp.org/…
Roman Scher
1

En caso de que alguien quiera tener una caja flexible flexible con porcentajes (%), es mucho más fácil para consultas de medios.

flex-basis: 25%;

Esto será mucho más suave durante las pruebas.

// VARIABLES
$screen-xs:                                         480px;
$screen-sm:                                         768px;
$screen-md:                                         992px;
$screen-lg:                                         1200px;
$screen-xl:                                         1400px;
$screen-xxl:                                        1600px;

// QUERIES
@media screen (max-width: $screen-lg) {
    flex-basis: 25%;
}

@media screen (max-width: $screen-md) {
    flex-basis: 33.33%;
}
chris_r
fuente