Grid & Layout
Sistema de grid de 12 colunas com classes responsivas para compor layouts flexíveis.
Sistema de grid
O elemento wrapper recebe a classe .grid. Os itens
usam .col-{n} para especificar quantas colunas
ocupam. Por padrão o grid tem 12 colunas.
Para personalizar o número de colunas globalmente, passe
$grid-columns no seu style.scss:
@use 'config' as * with (
$grid-columns: 18
);
Para ajustar o número de colunas no nível de um componente, use as
classes .grid-col-{n}:
<div class="grid grid-col-5">
<!-- grid com 5 colunas -->
</div>
Sem .col-{n}, o item ocupa toda a largura do grid.
<ul class="grid gap-xs">
<!-- 12 × col-1 -->
<li class="col-1"></li>
...
<!-- 6 × col-2 -->
<li class="col-2"></li>
...
<!-- 4 × col-3 -->
<li class="col-3"></li>
...
<!-- 2 × col-6 -->
<li class="col-6"></li>
...
<!-- sem classe = largura total -->
<li></li>
</ul> Tipos de coluna
.col — item expansível
Garante que todos os itens da mesma linha tenham larguras iguais. Também é útil para um item ocupar todo o espaço restante da linha.
<ul class="grid gap-xs">
<li class="col"></li>
<li class="col"></li>
<li class="col"></li>
</ul>
<ul class="grid gap-xs margin-top-xs">
<li class="col-2"></li>
<li class="col-2"></li>
<li class="col"></li>
</ul> .col-content — largura pelo conteúdo
A largura do item é determinada pelo seu conteúdo em vez de um número fixo de colunas.
<div class="grid gap-xs">
<input class="form-control col" type="text">
<button class="btn btn--primary col-content">Enviar</button>
</div> Modificadores responsivos
Use .col-{n}@{breakpoint},
.col@{breakpoint} e
.col-content@{breakpoint} para modificar o número
de colunas de um item em um breakpoint específico:
<ul class="grid gap-sm">
<li class="col-6@md col-3@lg"></li>
<li class="col-3@md"></li>
<!-- ... -->
</ul> Gap
As classes .gap-{size} definem o gap do grid. O gap
padrão é zero. Veja a referência completa em
Utilitários → Gap.
| Classe CSS | Descrição |
|---|---|
.gap-4xs | gap: var(--space-4xs); |
.gap-3xs | gap: var(--space-3xs); |
.gap-2xs | gap: var(--space-2xs); |
.gap-xs | gap: var(--space-xs); |
.gap-sm | gap: var(--space-sm); |
.gap-md | gap: var(--space-md); |
.gap-lg | gap: var(--space-lg); |
.gap-xl | gap: var(--space-xl); |
.gap-2xl | gap: var(--space-2xl); |
.gap-3xl | gap: var(--space-3xl); |
.gap-4xl | gap: var(--space-4xl); |
.gap-0 | gap: 0; |
Para mirar apenas o gap vertical (entre linhas):
<ul class="grid gap-y-md">
<!-- ... -->
</ul> Para apenas o gap horizontal (entre colunas):
<ul class="grid gap-x-sm">
<!-- ... -->
</ul> Variações responsivas:
<ul class="grid gap-sm gap-md@md gap-y-xl@lg">
<!-- ... -->
</ul>
Para valores fora da escala, use as custom properties
--column-gap e --row-gap via atributo
style:
<ul class="grid" style="--column-gap: 4px;">
<!-- ... -->
</ul> Offset
Use .offset-{n} para empurrar um item à direita.
Adicione @{breakpoint} para aplicar o offset em um
breakpoint específico, ou use .offset-0@{breakpoint}
para zerar o offset.
<ul class="grid gap-sm">
<li class="col-1 offset-11"></li>
<li class="col-2 offset-10"></li>
<li class="col-3 offset-9"></li>
<li class="col-4 offset-8"></li>
<li class="col-5 offset-7"></li>
...
</ul> Exemplos
Aninhamento
Grids podem ser aninhados: um .grid dentro de um
.col cria um sub-grid independente.
<ul class="grid gap-sm">
<li class="col-12 col-6@md">
<ul class="grid gap-sm">
<li class="col">
<ul class="grid gap-sm">
<li class="col"></li>
<li class="col"></li>
</ul>
</li>
<li class="col">
<ul class="grid gap-sm">
<li class="col"></li>
<li class="col"></li>
</ul>
</li>
</ul>
</li>
<li class="col-12 col-6@md">
<ul class="grid gap-sm">
<li class="col">
<ul class="grid gap-sm">
<li class="col"></li>
<li class="col"></li>
</ul>
</li>
<li class="col">
<ul class="grid gap-sm">
<li class="col"></li>
<li class="col"></li>
</ul>
</li>
</ul>
</li>
</ul> Distribuição
O .grid é um flex container — use as
classes flexbox
para controlar a distribuição:
<ul class="grid justify-between">
<li class="col-2"></li>
<li class="col-6"></li>
</ul>
<ul class="grid justify-center">
<li class="col-6"></li>
</ul> Ordem reversa
Inverta a ordem de colunas em um breakpoint usando
flex-row-reverse ou order:
<!-- usando flex-row-reverse -->
<ul class="grid gap-xs flex-row-reverse@md">
<li class="col-4@md">1</li>
<li class="col-8@md">2</li>
</ul>
<!-- usando order -->
<ul class="grid gap-xs margin-top-xs">
<li class="col-6 order-2">1</li>
<li class="col-6 order-1">2</li>
</ul> Quebra de colunas
Para quebrar colunas em linhas diferentes, aninha grupos de itens dentro
de um <li> sem classe de coluna (ocupa toda a largura):
<ul class="grid gap-md">
<li>
<ul class="grid gap-md">
<li class="col-3 height-xl bg-primary bg-opacity-60% radius-md"></li>
<li class="col-3 height-xl bg-primary bg-opacity-70% radius-md"></li>
</ul>
</li>
<li>
<ul class="grid gap-md justify-end">
<li class="col-3 height-xl bg-primary bg-opacity-80% radius-md"></li>
<li class="col-3 height-xl bg-primary bg-opacity-90% radius-md"></li>
<li class="col-3 height-xl bg-primary radius-md"></li>
</ul>
</li>
</ul>