Ăs vezes, ao criar um componente, vocĂȘ de repente percebe uma barra de rolagem horizontal estranha. VocĂȘ continua tentando consertar tudo, apenas para finalmente perceber que o motivo Ă© diferente. Quantas vezes vocĂȘ jĂĄ se encontrou nesta situação?
Neste artigo, abordarei um problema complicado que pode custar horas de tentativa e erro. Tem a ver com layout de grade e achei que valeria a pena falar sobre isso.
Antes de começar o artigo, quero primeiro expressar algumas das nuances. Aqui estão algumas coisas a serem lembradas:
VocĂȘ se depara com um problema no meio do dia. VocĂȘ estĂĄ cansado e ainda tem muito trabalho a fazer.
VocĂȘ estĂĄ com fome.
Ă fĂĄcil perder a causa raiz do problema, pois nĂŁo estĂĄ relacionado ao componente em que vocĂȘ estĂĄ trabalhando.
Com isso dito, vamos começar.
O que vocĂȘ precisa para conseguir no final
Para dar um pouco de contexto, aqui estĂĄ o layout que estou tentando obter. Observe que hĂĄ um contĂȘiner de rolagem no final da seção principal.
Vamos definir o problema
Ao trabalhar em uma seção com um contĂȘiner de rolagem, percebi a rolagem horizontal em toda a pĂĄgina , o que foi inesperado.
display: flex -, . , overflow-x: auto, X.
.section {
display: flex;
overflow-x: auto;
}
. , , .
, , . main - .
, ? , :
overflow-x: hidden?
- ?
, â . , . â . .
, , CSS (, - - ) , - .
, ? main aside:
<div class="wrapper">
<main>
<section class="section"></section>
</main>
<aside></aside>
</div>
@media (min-width: 1020px) {
.wrapper {
display: grid;
grid-template-columns: 1fr 248px;
grid-gap: 40px;
}
}
1fr. , gap. 100% . , â auto. - ( ).
, . minmax().
.wrapper {
display: grid;
grid-template-columns: minmax(0, 1fr) 248px;
grid-gap: 40px;
}
. , . CSS-, .main:
min-width: 0;
, overflow: hidden;
. , overflow: hidden.
, , . overflow: hidden .
, , .
, CSS Grid, 21 2021
(Ahmad Shadeed, The Minimum Content Size In CSS Grid, Jan 27, 2021)