CSS e web

Gradiente linear em CSS: o guia completo do linear-gradient()

Cada parte do linear-gradient() explicada com um exemplo ao vivo ao lado do código, da direção padrão às paradas duras, brilhos em camadas e misturas OKLCH mais suaves.

GradientlyConta verificada do Gradiently··7 min de leitura
Capa: Waking Hour · GR·RKP7·GN

Resumindo

  • Um gradiente linear em CSS é uma imagem que o navegador desenha ao longo de uma linha reta, escrita com a função linear-gradient() e usada onde quer que uma imagem seja aceita, em geral no background-image.
  • Sem uma direção, um gradiente linear vai de cima para baixo, o que equivale a 180deg; 0deg aponta para cima e os ângulos giram no sentido horário.
  • Paradas de cor sem posições são distribuídas uniformemente, e duas paradas na mesma posição fazem uma borda dura em vez de uma mistura.
  • Vários gradientes podem ser empilhados em um só background-image, separados por vírgulas, com o primeiro desenhado por cima.
  • Acrescentar um método de interpolação como in oklch mantém o meio de uma mistura brilhante em vez de deixá-lo ficar cinza.
Nesta página

Um gradiente linear em CSS é uma imagem que o navegador desenha ao longo de uma linha reta, misturando de uma cor para a próxima. Você o escreve com a função linear-gradient() e o usa onde quer que o CSS aceite uma imagem, na maioria das vezes no background-image. Ele não precisa de arquivo, escala para qualquer tamanho sem desfocar e não custa nada para baixar. A versão útil mais curta tem duas cores: linear-gradient(#0f172a, #38bdf8) vai do azul-marinho profundo no topo ao azul-céu embaixo.

css
.hero {
  background-color: #0f172a; /* shown if the gradient fails */
  background-image: linear-gradient(#0f172a, #38bdf8);
}
O gradiente linear mais simples: duas cores, direção padrão, com uma cor lisa por baixo como alternativa.
Azul-marinho a céu, de cima para baixolinear-gradient(#0f172a, #38bdf8)
O código acima, renderizado. Sem direção significa de cima para baixo.

Este guia percorre cada parte da função na ordem em que você as encontra. Se quiser o quadro mais amplo de como os gradientes lineares se comparam com misturas radiais, cônicas e de malha, comece por os tipos de gradientes.

A sintaxe do linear-gradient()

A função recebe uma direção opcional, um método opcional de interpolação de cor e depois uma lista de pelo menos duas paradas de cor. Tudo é separado por vírgulas, exceto a direção e o método de interpolação, que dividem o primeiro argumento.

ParteExemploO que faz
Direção como ângulo135deg, 0.25turnDefine o ângulo da linha do gradiente. 0deg aponta para cima, os ângulos giram no sentido horário.
Direção como palavras-chaveto right, to top leftAponta a linha para um lado ou canto da caixa.
Método de interpolaçãoin oklch, in srgbEscolhe o espaço de cor em que a mistura é calculada.
Parada de cor#38bdf8 40%Uma cor, opcionalmente com uma ou duas posições ao longo da linha.
Dica de cor30% entre duas paradasMove o ponto médio da mistura entre suas vizinhas.
As peças do linear-gradient(), na ordem em que aparecem. Só as paradas de cor são obrigatórias.

A referência completa está na página do linear-gradient() no MDN, que também documenta a gramática exata da especificação CSS Images.

Ângulos de gradiente e palavras-chave de direção

Os ângulos seguem uma bússola: 0deg aponta para cima, 90deg para a direita, 180deg para baixo e 270deg para a esquerda. O gradiente começa no lado oposto e vai em direção ao que você indica, então 90deg corre da esquerda para a direita. Você também pode escrever turn, rad ou grad, em que 0.25turn equivale a 90deg. O padrão, quando você não indica nada, é to bottom.

Um mesmo par de índigo a rosa em quatro ângulos. A primeira cor fica sempre no início da linha.

Palavras-chave de canto não são o mesmo que ângulos de 45 graus. O to top right inclina a linha para que a cor do meio corra exatamente entre os outros dois cantos, seja qual for o formato da caixa. Em um banner largo, essa linha é bem mais achatada que a do 45deg, que sempre aponta a 45 graus e ignora o formato da caixa. Use palavras-chave quando a mistura deve respeitar os cantos e ângulos quando vários elementos de formatos diferentes devem compartilhar uma direção. Há mais sobre como escolher direções em ângulos de gradiente.

Paradas de cor, posições e dicas

Paradas sem posição são espaçadas uniformemente, então três cores ficam em 0%, 50% e 100%. Dê a uma parada uma posição em porcentagem ou em comprimento para movê-la. Dê duas posições e a cor se mantém sólida entre elas. Coloque uma porcentagem solta entre duas paradas e ela vira uma dica: o ponto onde a mistura chega à cor intermediária, o que deixa um lado da transição mais rápido que o outro.

css
/* even spacing */
background-image: linear-gradient(90deg, #0c4a6e, #22d3ee, #f0f9ff);

/* a hint: the midpoint arrives early, at 20% */
background-image: linear-gradient(90deg, #0c4a6e, 20%, #22d3ee);

/* two positions: cyan holds solid from 35% to 65% */
background-image: linear-gradient(90deg, #0c4a6e, #22d3ee 35% 65%, #f0f9ff);
Três jeitos de moldar a mesma mistura. As posições também podem ser comprimentos, como 120px.
A mesma paleta de oceano profundo a gelo, moldada de três jeitos por posições e dicas.

Paradas duras para listras e divisões

Quando duas paradas têm a mesma posição, não há espaço para misturar, então você obtém uma borda nítida. Os navegadores também limitam uma parada que vem antes da anterior, o que dá um atalho útil: #f97316 50%, #1e293b 0 significa que a segunda cor começa exatamente onde a primeira termina. Repita a ideia com repeating-linear-gradient() e você tem listras.

Paradas duras desenham formas em vez de misturas. Há muitas outras em padrões em CSS.

Empilhando vários gradientes em um só fundo

O background-image aceita uma lista separada por vírgulas, e a primeira imagem é pintada por cima. As camadas só aparecem umas através das outras onde são transparentes, então os gradientes de cima costumam esmaecer para transparent. Os navegadores modernos misturam em alfa pré-multiplicado, então esmaecer para transparent não arrasta mais um tom cinza para a cor como já arrastou. Combine as camadas com background-size e background-repeat quando uma camada deve cobrir só parte da caixa.

css
.card {
  background-color: #111827;
  background-image:
    /* top: a soft sheen across the upper third */
    linear-gradient(180deg, rgb(255 255 255 / 0.12), transparent 35%),
    /* bottom: the colour itself */
    linear-gradient(135deg, #312e81, #7c3aed 55%, #db2777);
}
Um brilho sobreposto a um gradiente base. O primeiro gradiente da lista é desenhado por cima.

Empilhar também é a base de efeitos mais ricos: brilhos radiais em camadas formam um gradiente de malha em CSS, e uma fina camada de ruído por cima esconde os degraus, como explica banding em gradientes.

Misturas mais suaves com interpolação de cor

Quando toda cor é escrita em um formato antigo, como hex, rgb() ou hsl(), o navegador mistura em sRGB por compatibilidade. As misturas em sRGB entre matizes distantes passam por meios sem graça e acinzentados: azul a amarelo é o caso clássico. Acrescentar in oklab ou in oklch pede um espaço de cor perceptual, que mantém o meio mais claro e uniforme. O guia dedicado a gradientes OKLCH em CSS trata de direções de matiz e alternativas.

Azul a amarelo de três jeitos. Só o método de interpolação muda.

Evite

  • Misturas longas entre matizes opostos em sRGB simples
  • to top right quando vários cards de formatos diferentes devem compartilhar uma direção
  • Esmaecer para white quando a intenção é sumir; use transparent
  • Misturas escuras, largas e muito suaves sem grão, que formam faixas em muitas telas

Faça

  • Acrescente in oklch ou uma parada intermediária para manter as misturas vivas
  • Use um só ângulo, como 135deg, para um sistema consistente
  • Esmaeça as camadas para transparent para o que está por baixo aparecer
  • Acrescente uma camada leve de ruído sobre gradientes escuros grandes

Suporte dos navegadores e alternativas

O linear-gradient() funciona sem prefixo em todos os navegadores atuais, então as antigas versões com -webkit- podem sair. Métodos de interpolação, paradas de duas posições e dicas são mais novos; confira o caniuse para os detalhes. O padrão mais seguro é um background-color liso primeiro, depois o gradiente e depois qualquer versão aprimorada em uma declaração posterior, que os navegadores mais antigos pulam por não conseguirem interpretá-la.

css
.banner {
  background-color: #1e3a8a;
  background-image: linear-gradient(90deg, #1e3a8a, #f59e0b);
  /* browsers that understand interpolation methods use this line */
  background-image: linear-gradient(90deg in oklch, #1e3a8a, #f59e0b);
}
Aprimoramento progressivo: cada linha substitui a anterior só se o navegador a entender.

Se você prefere partir de uma mistura que já tem personalidade em vez de ajustar as paradas à mão, um gerador de gradientes ou uma biblioteca de fundos prontos poupa tempo. De qualquer forma, guarde o código: um gradiente em CSS continua nítido em qualquer tamanho e pesa alguns bytes.

Perguntas frequentes

Como faço um gradiente linear em CSS?

Defina background-image: linear-gradient(direção, cor1, cor2) em um elemento, por exemplo linear-gradient(90deg, #0f172a, #38bdf8). Acrescente um background-color antes dele como alternativa.

Qual é a direção padrão de um gradiente linear em CSS?

De cima para baixo, o mesmo que to bottom ou 180deg. A primeira cor aparece no topo e a última embaixo.

Como faço uma linha dura em um gradiente linear?

Dê a duas paradas vizinhas a mesma posição, como #f97316 50%, #1e293b 50%, ou use 0 como segunda posição para que ela seja limitada à parada anterior.

Por que o meio do meu gradiente parece cinza?

As cores hex se misturam em sRGB por padrão, o que deixa sem graça o ponto médio entre matizes distantes. Acrescente in oklch ou in oklab depois do ângulo, ou insira uma parada intermediária mais brilhante.

45deg é o mesmo que to top right?

Só em um quadrado. O 45deg sempre aponta a 45 graus, enquanto o to top right ajusta seu ângulo para que a cor do meio corra entre os outros dois cantos da caixa.

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