html - tabla - overflow css
¿Por qué los elementos flexibles no reducen el tamaño del contenido? (1)
Tengo 4 columnas flexbox y todo funciona bien, pero cuando agrego algo de texto a una columna y lo configuro en un tamaño de fuente grande, está haciendo que la columna sea más ancha de lo que debería debido a la propiedad flex.
Intenté usar
word-break: break-word
y me ayudó, pero aún así cuando cambio el tamaño de la columna a un ancho muy pequeño, las letras en el texto se dividen en varias líneas (una letra por línea), y sin embargo, la columna no obtener un ancho menor que un tamaño de letra.
Mire este video (al principio, la primera columna es la más pequeña, pero cuando cambié el tamaño de la ventana, es la columna más ancha. Solo quiero respetar la configuración flexible siempre; tamaños flexibles 1: 3: 4: 4)
Lo sé, establecer el tamaño de fuente y el relleno de columna en más pequeño ayudará ... pero ¿hay alguna otra solución?
No puedo usar
overflow-x: hidden
.
.container {
display: flex;
width: 100%
}
.col {
min-height: 200px;
padding: 30px;
word-break: break-word
}
.col1 {
flex: 1;
background: orange;
font-size: 80px
}
.col2 {
flex: 3;
background: yellow
}
.col3 {
flex: 4;
background: skyblue
}
.col4 {
flex: 4;
background: red
}
<div class="container">
<div class="col col1">Lorem ipsum dolor</div>
<div class="col col2">Lorem ipsum dolor</div>
<div class="col col3">Lorem ipsum dolor</div>
<div class="col col4">Lorem ipsum dolor</div>
</div>
El tamaño mínimo automático de artículos flexibles
Estás encontrando una configuración predeterminada de flexbox.
Un elemento flexible no puede ser más pequeño que el tamaño de su contenido a lo largo del eje principal.
Los valores predeterminados son ...
-
min-width: auto
-
min-height: auto
... para elementos flexibles en dirección de fila y columna, respectivamente.
Puede anular estos valores predeterminados configurando elementos flexibles en:
-
min-width: 0
-
min-height: 0
-
overflow: hidden
(o cualquier otro valor, exceptovisible
)
Especificación de Flexbox
4.5. Tamaño mínimo automático de artículos flexibles
Para proporcionar un tamaño mínimo predeterminado más razonable para los elementos flexibles, esta especificación introduce un nuevo valor
auto
como el valor inicial de las propiedadesmin-width
ymin-height
definidas en CSS 2.1.
Con respecto al valor
auto
...
En un elemento flexible cuyo
overflow
esvisible
en el eje principal, cuando se especifica en la propiedad de tamaño mínimo del eje principal del elemento flexible, especifica un tamaño mínimo automático . De lo contrario, se calcula a0
.
En otras palabras:
-
El
min-width: auto
ymin-height: auto
valores predeterminadosmin-height: auto
solo se aplican cuando eloverflow
esvisible
. -
Si el valor de
overflow
no esvisible
, el valor de la propiedad de tamaño mínimo es0
. -
Por lo tanto,
overflow: hidden
puede ser un sustituto demin-width: 0
ymin-height: 0
.
y...
- El algoritmo de dimensionamiento mínimo se aplica solo en el eje principal.
-
Por ejemplo, un elemento flexible en un contenedor de dirección de fila no obtiene
min-height: auto
por defecto. -
Para una explicación más detallada, vea esta publicación:
- representación mínima de ancho de manera diferente en dirección flexible: fila y dirección flexible: columna
¿Has aplicado min-width: 0 y el elemento aún no se encoge?
Contenedores Flex Anidados
Si se trata de elementos flexibles en múltiples niveles de la estructura HTML, puede ser necesario anular el
min-width: auto
predeterminado
min-width: auto
/
min-height: auto
en elementos en niveles superiores.
Básicamente, un elemento flexible de nivel superior con
min-width: auto
puede evitar la reducción en los elementos anidados a continuación con
min-width: 0
.
Ejemplos:
- El elemento flexible no se encoge más pequeño que su contenido
- Encajar al niño en el padre
- la propiedad css de espacio en blanco está creando problemas con flex
Notas de renderizado del navegador
-
Chrome frente a Firefox / Edge
Desde al menos 2017, parece que Chrome está (1) volviendo al
min-width: 0
/min-height: 0
valores predeterminados, o (2) aplicando automáticamente los valores predeterminados0
en ciertas situaciones basadas en un algoritmo misterioso. (Esto podría ser lo que llaman una intervention ). Como resultado, muchas personas están viendo que su diseño (especialmente las barras de desplazamiento deseadas) funciona como se espera en Chrome, pero no en Firefox / Edge. Este problema se trata con más detalle aquí: discrepancia de reducción flexible entre Firefox y Chrome -
IE11
Como se indica en la especificación, el valor
auto
para las propiedadesmin-width
ymin-height
es "nuevo". Esto significa que algunos navegadores aún pueden representar un valor0
de forma predeterminada, porque implementaron el diseño flexible antes de que el valor se actualizara y porque0
es el valor inicial paramin-width
ymin-height
en CSS 2.1 . Uno de esos navegadores es IE11. Otros navegadores se han actualizado al valorauto
más nuevo como se define en la especificación de flexbox .
Demo revisada
.container {
display: flex;
}
.col {
min-height: 200px;
padding: 30px;
word-break: break-word
}
.col1 {
flex: 1;
background: orange;
font-size: 80px;
min-width: 0; /* NEW */
}
.col2 {
flex: 3;
background: yellow
}
.col3 {
flex: 4;
background: skyblue
}
.col4 {
flex: 4;
background: red
}
<div class="container">
<div class="col col1">Lorem ipsum dolor</div>
<div class="col col2">Lorem ipsum dolor</div>
<div class="col col3">Lorem ipsum dolor</div>
<div class="col col4">Lorem ipsum dolor</div>
</div>