CSS e web

Padrões CSS com gradientes repetidos

Paradas de cor duras transformam gradientes em formas, e o background-size transforma formas em ladrilhos. Com essas duas ideias você desenha os padrões clássicos em poucas linhas, sem arquivos de imagem.

GradientlyConta verificada do Gradiently··5 min de leitura
Capa: Burnt Expedition · GR·5E64·EH

Resumindo

  • Os padrões CSS são desenhados com gradientes que usam paradas de cor duras, então as cores trocam de uma vez em vez de se misturar.
  • As funções repeating-linear-gradient, repeating-radial-gradient e repeating-conic-gradient repetem suas paradas até preencher o elemento, o que desenha listras, anéis e raios.
  • O background-size transforma um único gradiente em ladrilho, e é assim que se constroem grades de pontos, grades de linhas, xadrez e vichy.
  • Posições de parada escritas em pixels mantêm as listras nítidas e regulares, enquanto porcentagens podem gerar bordas irregulares e borradas.
  • Padrões atrás de texto devem ter pouco contraste, para que as palavras continuem fáceis de ler.
Nesta página

Os padrões CSS são fundos repetidos, como listras, grades, bolinhas e xadrez, desenhados só com funções de gradiente. Duas ideias fazem tudo funcionar. Paradas de cor duras, em que duas paradas ocupam a mesma posição, transformam um gradiente numa borda nítida. A repetição, seja com as funções de gradiente repeating-* ou com o ladrilhamento do background-size, transforma uma borda num padrão. O resultado pesa alguns bytes, escala com perfeição e pega as cores das suas variáveis CSS.

Seis padrões, cada um um único gradiente repetido. Copie qualquer um direto para o background.

Como as paradas duras criam formas

Um gradiente se mistura entre paradas vizinhas. Se a próxima parada começa exatamente onde a anterior terminou, não há distância para misturar, e a cor muda numa linha dura. O atalho para isso é uma cor com duas posições, como #1e293b 0 10px, que mantém a cor chapada de 0 a 10 pixels. O guia de gradiente linear em CSS trata em detalhe de paradas, dicas e paradas duras.

css
/* a soft blend */
background: linear-gradient(90deg, #1e293b, #334155);

/* a hard edge at 50% */
background: linear-gradient(90deg, #1e293b 50%, #334155 50%);

/* the same stripe pair, repeated every 20px */
background: repeating-linear-gradient(90deg, #1e293b 0 10px, #334155 10px 20px);
Da mistura à borda e ao padrão, em três passos.

Listras com repeating-linear-gradient

O repeating-linear-gradient() repete a lista de paradas ao longo da linha do gradiente até o elemento ficar cheio. O comprimento de uma repetição é a posição da última parada, então 0 10px, 10px 20px repete a cada 20 pixels. Mude o ângulo para fazer diagonais e mude a proporção entre as duas faixas para obter filetes ou listras largas de toldo.

PadrãoParadasEfeito
Listras iguaisA 0 10px, B 10px 20pxFaixas iguais, repetição de 20px
FileteA 0 23px, B 23px 24pxUma linha de 1px a cada 24px
ToldoA 0 40px, B 40px 80px em 90degFaixas verticais largas
Linha duplaA 0 20px, B 20px 22px, A 22px 26px, B 26px 28pxDuas linhas finas bem juntas
Receitas de listras. A e B são as suas duas cores; a última parada define o comprimento da repetição.

Grades, bolinhas e ladrilhos com background-size

Alguns padrões não podem ser desenhados por um único gradiente repetido: uma grade de pontos precisa de repetição em duas direções. A solução é desenhar um ladrilho, como um ponto ou um canto de grade, e então definir o background-size com o tamanho do ladrilho. Os fundos se repetem por padrão, então o ladrilho preenche o elemento.

css
.grid-lines {
  background-color: #0f172a;
  background-image:
    linear-gradient(rgb(255 255 255 / 0.08) 1px, transparent 1px),
    linear-gradient(90deg, rgb(255 255 255 / 0.08) 1px, transparent 1px);
  background-size: 32px 32px;
}

.dots {
  background-color: #fefce8;
  background-image: radial-gradient(#ca8a04 1.5px, transparent 2px);
  background-size: 20px 20px;
}

.checkerboard {
  background: repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) 0 0 / 24px 24px;
}
Uma grade de projeto, uma grade de pontos e um xadrez. Cada um é um ladrilho repetido pelo background-size.

A grade são dois gradientes: um desenha uma linha horizontal de 1px no topo de cada ladrilho e o outro uma linha vertical na borda esquerda. Os pontos são um pequeno gradiente radial que fica transparente depois de 2 pixels. O xadrez usa um gradiente cônico dividido em quartos, e é por isso que precisa de uma só camada.

Vichy, xadrez escocês e zigue-zague

Sobrepor listras semitransparentes cria padrões tecidos: onde uma faixa horizontal e uma vertical se cruzam, as cores se somam e o quadrado escurece. Isso é o vichy. Acrescente um segundo conjunto de listras mais finas em outra cor e ele vira xadrez escocês. Os zigue-zagues vêm de quatro cantos triangulares, cada um desenhado com uma parada dura em 25% num ângulo diferente.

css
.gingham {
  background-color: #ffffff;
  background-image:
    linear-gradient(90deg, rgb(220 38 38 / 0.45) 50%, transparent 0),
    linear-gradient(rgb(220 38 38 / 0.45) 50%, transparent 0);
  background-size: 24px 24px;
}

.zigzag {
  background-color: #e0f2fe;
  background-image:
    linear-gradient(135deg, #0ea5e9 25%, transparent 25%),
    linear-gradient(225deg, #0ea5e9 25%, transparent 25%),
    linear-gradient(315deg, #0ea5e9 25%, transparent 25%),
    linear-gradient(45deg, #0ea5e9 25%, transparent 25%);
  background-position: -16px 0, -16px 0, 0 0, 0 0;
  background-size: 32px 32px;
}
Um vichy vermelho e um zigue-zague azul-céu. No zigue-zague, as duas primeiras camadas são deslocadas meio ladrilho para os triângulos se encaixarem.

Listras em movimento para barras de progresso

Listras diagonais animadas são a forma clássica de mostrar que algo ainda está em andamento. Desenhe as listras como um ladrilho com background-size e depois mova o background-position exatamente a largura de um ladrilho. Como o quadro final é igual ao inicial, o loop não tem salto visível. Use em elementos pequenos e desligue para quem prefere movimento reduzido.

css
.progress {
  background-color: #4f46e5;
  background-image: linear-gradient(45deg, rgb(255 255 255 / 0.18) 25%, transparent 25% 50%, rgb(255 255 255 / 0.18) 50% 75%, transparent 75%);
  background-size: 28px 28px;
  animation: crawl 1s linear infinite;
}

@keyframes crawl {
  to { background-position: 28px 0; }
}

@media (prefers-reduced-motion: reduce) {
  .progress { animation: none; }
}
Listras que avançam por uma barra de progresso. A distância da animação é igual à largura do ladrilho, então o loop é contínuo.

Tamanho, temas e escala dos padrões

Escreva posições de parada e tamanhos de ladrilho em pixels ou em em, não em porcentagens. As porcentagens dependem do tamanho do elemento, então as listras se esticam de forma irregular quando ele muda de tamanho e as bordas podem cair entre pixels e ficar borradas. Usar em faz o padrão escalar com o texto ao redor, o que combina com selos e etiquetas estampados.

As propriedades personalizadas tornam os padrões reutilizáveis. Defina as cores e o tamanho uma vez e depois varie por componente ou por tema, por exemplo um padrão mais claro no modo claro e um mais discreto no modo escuro.

css
.stripes {
  --a: #1e293b;
  --b: #334155;
  --w: 10px;
  background: repeating-linear-gradient(45deg, var(--a) 0 var(--w), var(--b) var(--w) calc(var(--w) * 2));
}

.stripes--warm {
  --a: #fff7ed;
  --b: #fed7aa;
  --w: 14px;
}
Um padrão, com tema trocado por três variáveis.

Padrões atrás de texto

Evite

  • Listras de alto contraste diretamente atrás do texto corrido
  • Padrões finos que tremeluzem quando a página rola
  • Padrões na mesma cor do texto
  • Vários padrões diferentes numa só tela

Faça

  • Padrões de baixo contraste, dois tons próximos de uma mesma cor
  • Ladrilhos maiores e mais calmos em superfícies grandes
  • Um painel sólido sob o texto que fica sobre um padrão movimentado
  • Um único padrão como destaque reconhecível

Padrões são um tipo de textura, e valem as mesmas regras: sutis o bastante para serem sentidos, não lidos. A textura de fundo trata de grão, papel e tecido; o texto sobre fundos cheios trata de manter as palavras legíveis por cima.

Perguntas frequentes

Como fazer listras em CSS?

Use repeating-linear-gradient() com paradas duras, como repeating-linear-gradient(45deg, #1e293b 0 10px, #334155 10px 20px). Mude o ângulo para a direção e os comprimentos para a largura.

Como fazer um padrão de bolinhas em CSS?

Desenhe um ponto com radial-gradient(#ca8a04 1.5px, transparent 2px) e repita com background-size: 20px 20px.

Como fazer um xadrez em CSS?

Use repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) com um background-size como 24px 24px. Cada ladrilho tem quatro quadrados.

Por que as minhas listras CSS ficam borradas ou irregulares?

Posições em porcentagem podem cair entre pixels. Use comprimentos em pixels ou em em para paradas e tamanhos de ladrilho e deixe meio pixel entre as paradas nas bordas diagonais.

Padrões de gradiente CSS são melhores que padrões em imagem?

Para padrões geométricos, em geral sim: não exigem download, ficam nítidos em qualquer tamanho e podem ser recoloridos com variáveis CSS. Texturas orgânicas ou fotográficas ainda precisam de imagens.

Compartilhar este guia

Escrito pelo GradientlyConta verificada do Gradiently

A equipe por trás do Gradiently, uma ferramenta de design criada em torno dos Marks: gradientes vivos que fazem tudo o que você cria ter a sua cara.

Ver nosso perfil