Tengo un conjunto de niños dentro de un display: grid
contenedor: cada niño está numerado. En el punto de corte de 600px, el niño 4
pierde por completo la compostura y se desinfla a su tamaño de contenido interno. ¿Por qué no sube 4
abajo 3
?
.box {
background: yellow;
display: flex;
justify-content: center;
align-items: center;
font-size: 48px;
font-weight: bold;
}
.box.md {
grid-column: span 2;
}
.box.lg {
grid-column: span 2;
grid-row: span 2;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 20px;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
grid-auto-rows: 240px;
grid-auto-flow: dense;
grid-gap: 8px;
}
@media (max-width: 920px) {
max-width: 800px;
}
@media (max-width: 600px) {
grid-auto-rows: 120px;
}
<div class="container">
<div class="box lg">1</div>
<div class="box md">2</div>
<div class="box sm">3</div>
<div class="box sm">4</div>
</div>
¿Por qué 4 no sube por debajo de 3?
Porque los puntos 1 y 2 se han grid-column: span 2
aplicado. Lo que significa que ya hay dos columnas disponibles y que el elemento 4 no tiene ninguna razón para pasar a la siguiente fila.
Haga que todas las columnas tomen una fila completa.
Agregue esto a su código:
@media (max-width: 600px) {
.container > div {
grid-column: span 1 !important; (you need to override the span 2 rules higher up)
}
}
Y el motivo del colapso del elemento 4 no tiene nada que ver con su consulta de medios.
Si observa de cerca, encontrará que el elemento 4 se colapsa cuando el ancho de la pantalla es de 640 px. Esto es antes de que se alcance la consulta de medios de 600 px.
Aquí está el problema:
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))
Con un ancho de pantalla de 640 px, el elemento 3 alcanza los 280 px, el ancho mínimo que puede tener.
Como resultado, el elemento 4 se envía a la segunda columna, que fue creada por grid-column: span 2
en sus hermanos.
Sin embargo, en este tamaño de pantalla, solo hay espacio para una columna explícita (es decir, definida). La segunda columna debe generarse en la cuadrícula implícita (es decir, no definida).
Y, debido a que el valor predeterminado de grid-auto-columns
la propiedad que dimensiona las columnas implícitas es auto
, la segunda columna toma el ancho de la celda más ancha.
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras