SW Core
SW Core / CSS / Espaçamento

Espaçamento CSS

Espaço de dentro (p-), de fora (m-) e entre itens (gap-) numa régua só: pp · p · m · g · gg · xg · xxg, de 4 a 120 px.

O que é

É o "ar" do layout: a folga dentro de um card, a distância entre um bloco e outro, o espaço entre botões lado a lado. Em vez de inventar números, você usa uma régua de 7 tamanhos com nomes curtos — pp (bem pequeno), p, m (médio), g (grande), gg, xg, xxg (enorme) — e a mesma régua vale para os três tipos de espaço. Aprendeu uma vez, usou em tudo.

É só CSS. A classe é tipo + tamanho: p-g = padding (espaço de dentro) grande, m-m = margin (espaço de fora) médio, gap-p = espaço entre os itens, pequeno. Para um lado só, acrescente a letra do lado: t cima, b baixo, l esquerda, r direita (pt-g, mb-m). Para dois lados de uma vez: x (esquerda e direita) e y (cima e baixo) — px-g, my-p. Os tamanhos vêm das variáveis --sw-s-pp…--sw-s-xxg e crescem junto se você aumentar o --sw-type-scale.

Quando usar

  • Folga dentro de card, botão, caixa: p-m ou p-g.
  • Espaço entre seções da página: py-xg na <section>.
  • Botões ou ícones lado a lado: flx gap-p no pai (melhor que margem em cada um).
  • Campos de formulário empilhados: flx f-cl gap-m.
  • Afastar só um lado (título do texto de baixo): mb-m.
  • Centralizar um bloco com largura menor: mx-au.

Comece aqui

  1. 1

    Coloque o SW Core no <head>. Todas as classes de espaço estão no arquivo principal.

    <link rel="stylesheet" href="swcore/swcore.min.css">
  2. 2

    Escolha o tipo e o tamanho. Aqui: espaço de dentro grande (p-g) no card e espaço médio entre os botões (gap-m).

    Plano Profissional — R$ 99/mês

    <div class="bg-sur bd r-m p-g">
      <p>Plano Profissional — R$ 99/mês</p>
      <div class="flx gap-m">
        <button sw-btn="pri">Assinar</button>
        <button sw-btn="out">Detalhes</button>
      </div>
    </div>

Todas as variações

Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.

1. A régua — espaço entre itens (gap)

Os dois quadradinhos estão separados exatamente pelo tamanho do nome. gap funciona dentro de flx (linha) e de l/grd (grade).

gap-pp — 4 px <div class="flx gap-pp"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>
gap-p — 8 px <div class="flx gap-p"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>
gap-m — 16 px <div class="flx gap-m"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>
gap-g — 24 px <div class="flx gap-g"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>
gap-gg — 48 px <div class="flx gap-gg"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>
gap-xg — 80 px <div class="flx gap-xg"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>
gap-xxg — 120 px <div class="flx gap-xxg"><span class="bg-pri p-m r-p"></span><span class="bg-pri p-m r-p"></span></div>

2. Espaço de dentro (p-)

A parte colorida clarinha é o padding: a folga entre a borda e o conteúdo.

conteúdo
p-pp — 4 px <div class="bg-pri-soft r-p p-pp"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
p-p — 8 px <div class="bg-pri-soft r-p p-p"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
p-m — 16 px <div class="bg-pri-soft r-p p-m"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
p-g — 24 px <div class="bg-pri-soft r-p p-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
p-gg — 48 px <div class="bg-pri-soft r-p p-gg"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
p-xg — 80 px <div class="bg-pri-soft r-p p-xg"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
p-xxg — 120 px <div class="bg-pri-soft r-p p-xxg"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>

3. Espaço de dentro de um lado ou de um eixo

Letra do lado depois do p: t cima, r direita, b baixo, l esquerda. x = esquerda + direita; y = cima + baixo.

conteúdo
pt-g — só em cima <div class="bg-pri-soft r-p pt-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
pr-g — só à direita <div class="bg-pri-soft r-p pr-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
pb-g — só embaixo <div class="bg-pri-soft r-p pb-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
pl-g — só à esquerda <div class="bg-pri-soft r-p pl-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
px-g — esquerda e direita <div class="bg-pri-soft r-p px-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
conteúdo
py-g — cima e baixo <div class="bg-pri-soft r-p py-g"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>

4. Espaço de fora (m-)

A linha tracejada é o "pai". O espaço entre ela e o bloco colorido é a margin do bloco. Mesma régua, mesmos lados.

bloco
m-p — 8 px em volta <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp m-p">bloco</div></div>
bloco
m-g — 24 px em volta <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp m-g">bloco</div></div>
bloco
mt-g — só em cima <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp mt-g">bloco</div></div>
bloco
ml-g — só à esquerda <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp ml-g">bloco</div></div>
bloco
mx-g — esquerda e direita <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp mx-g">bloco</div></div>
bloco
my-g — cima e baixo <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp my-g">bloco</div></div>

5. Automático e zero

au (automático) empurra o bloco: à direita (ml-au) ou para o meio (mx-au, precisa de uma largura menor que o pai). 0 zera.

Sair
ml-au — empurra para a direita <div class="flx"> <span class="ml-au">Sair</span> </div>
centro
mx-au — centraliza o bloco <div class="g-pp mx-au">centro</div>
conteúdo
p-0 — sem espaço de dentro <div class="bg-pri-soft r-p p-0"><div class="bg-sur bd r-p p-p t-pp">conteúdo</div></div>
bloco
m-0 — sem espaço de fora <div class="bd bd-dsh r-p"><div class="bg-pri r-p p-p t-pp m-0">bloco</div></div>

6. Espaço só entre colunas ou só entre linhas

gap-x- afasta só na horizontal; gap-y- só na vertical. Útil em lista que quebra linha.

gap-x-g gap-y-pp <div class="flx f-wr gap-x-g gap-y-pp w-fl"> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> </div>
gap-x-pp gap-y-g <div class="flx f-wr gap-x-pp gap-y-g w-fl"> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> <span class="bg-pri p-m r-p"></span> </div>

Tabela de opções

PalavraO que fazExemplo
A régua (vale para p-, m- e gap-)
pp4 px (--sw-s-pp).p-pp · m-pp · gap-pp
p8 px (--sw-s-p).p-p
m16 px (--sw-s-m).p-m
g24 px (--sw-s-g).p-g
gg48 px (--sw-s-gg).p-gg
xg80 px (--sw-s-xg).p-xg
xxg120 px (--sw-s-xxg).p-xxg
0Zero.p-0 · m-0 · gap-0
Espaço de dentro (padding)
p-{tam}Todos os lados.class="p-g"
pt- · pr- · pb- · pl-{tam}Um lado: cima, direita, baixo, esquerda.class="pt-m"
px- · py-{tam}Esquerda+direita / cima+baixo.class="px-g py-m"
Espaço de fora (margin)
m-{tam}Todos os lados.class="m-m"
mt- · mr- · mb- · ml-{tam}Um lado.class="mb-g"
mx- · my-{tam}Esquerda+direita / cima+baixo.class="my-xg"
ml-auMargem automática à esquerda: empurra para a direita.class="ml-au"
mx-auMargem automática dos dois lados: centraliza.class="mx-au"
Espaço entre itens (dentro de flx, l ou grd)
gap-{tam}Entre todos os itens.class="flx gap-p"
gap-x-{tam}Só entre colunas (pp · p · m · g · gg · 0).class="gap-x-g"
gap-y-{tam}Só entre linhas (pp · p · m · g · gg · 0).class="gap-y-p"
Números antigos (ainda funcionam, prefira a régua)
gap-1 … gap-8 · gap-10 · gap-12 · gap-164 · 8 · 12 · 16 · 20 · 24 · 28 · 32 · 40 · 48 · 64 px.class="gap-3"
p-1 · 2 · 3 · 4 · 6 · 8 · 10 (idem m-)4 · 8 · 12 · 16 · 24 · 32 · 40 px. Não existem 5, 7 e 9.class="p-4"
pt/pr/pb/pl/px/py- e mt/mr/mb/ml/mx/my- 1 · 2 · 3 · 4 · 6 · 8 · 10Mesmos valores, por lado.class="mb-4"
No seu CSS
var(--sw-s-pp) … var(--sw-s-xxg)A régua como variável.padding: var(--sw-s-g);
var(--sw-s-1) … var(--sw-s-60)Régua fina de 2 em 2 px (1 = 2 px, 8 = 16 px, 24 = 48 px, 60 = 120 px).gap: var(--sw-s-6);

Receitas prontas — usos reais

Situações que aparecem em quase todo site. Copie a que servir.

Seção de página com respiro em cima e embaixo Ao vivo

Pronto para começar?

Fale com a gente e receba um orçamento hoje.

Pedir orçamento
<section class="bg-sur bd r-m py-xg px-g t-ct">
  <p class="t-gg t-txt mb-p">Pronto para começar?</p>
  <p class="mb-g">Fale com a gente e receba um orçamento hoje.</p>
  <a href="/contato" sw-btn="pri">Pedir orçamento</a>
</section>
Formulário com campos igualmente espaçados Ao vivo
<form class="flx f-cl gap-m g-p mx-au">
  <div sw-fld><label for="nome">Nome</label><input sw-inp id="nome" placeholder="Seu nome"></div>
  <div sw-fld><label for="tel">WhatsApp</label><input sw-inp id="tel" placeholder="(11) 90000-0000"></div>
  <button sw-btn="pri">Quero ser chamado</button>
</form>
Barra do topo: logo à esquerda, botão à direita Ao vivo
<nav class="flx alc gap-m bg-sur bd r-m px-g py-p">
  <strong>Studio Sol</strong>
  <a href="/servicos">Serviços</a>
  <a href="/contato">Contato</a>
  <a href="/agendar" sw-btn="pri p" class="ml-au">Agendar</a>
</nav>
Etiquetas que quebram linha com espaço certo Ao vivo
CorteBarbaSobrancelhaPigmentaçãoHidratação
<div class="flx f-wr gap-p">
  <span class="bg-pri-soft t-pri px-p py-pp r-p t-p">Corte</span>
  <span class="bg-pri-soft t-pri px-p py-pp r-p t-p">Barba</span>
  <span class="bg-pri-soft t-pri px-p py-pp r-p t-p">Sobrancelha</span>
  <!-- … -->
</div>

Precisa de quê

  • swcore.min.css — todas as classes desta página.

Cuidados — erros comuns

  • gap só funciona no pai que é flx, l ou grd. Num <div> comum ele não faz nada.
  • Para espaço entre itens lado a lado, prefira gap no pai a mr- em cada filho: com margem o último item fica com espaço sobrando e a quebra de linha desalinha.
  • Não existe p-5, m-7 nem p-9 (a escala antiga pula esses números). Use a régua com nome: p-m, p-g…
  • mx-au só centraliza se o bloco for mais estreito que o pai (ex.: g-p mx-au, ou uma largura no seu CSS).
  • Margem de cima de um bloco e margem de baixo do anterior não somam: o navegador fica com a maior (isso é normal do CSS). Dentro de flx/l isso não acontece.
  • As classes de espaço usam !important: elas vencem o CSS do componente. Se um espaço "não sai", confira se não tem outra classe de espaço brigando no mesmo elemento.

O que ele não faz

  • Não tem versão por tamanho de tela (p-g-m não existe): o espaço é o mesmo no celular e no computador. Para mudar por tela, use o seu CSS com var(--sw-s-*).
  • gap-x-/gap-y- vão só até gg (não existe gap-x-xg).
  • Não há margem negativa.