Resumindo
- Um gradiente radial em CSS espalha cor para fora a partir de um ponto central e é escrito com a função radial-gradient() em qualquer lugar onde o CSS aceite uma imagem.
- Por padrão, um gradiente radial é uma elipse, centralizada na caixa e dimensionada para alcançar o canto mais distante.
- As palavras-chave de tamanho closest-side, closest-corner, farthest-side e farthest-corner decidem onde cai a última parada de cor.
- A palavra-chave at move o centro, por exemplo at 20% 30%, e as posições funcionam como no background-position.
- Sobrepor vários gradientes radiais que se dissolvem em transparente é a forma padrão de construir brilhos suaves e fundos parecidos com malha em CSS.
Nesta página
Um gradiente radial em CSS mistura cor para fora a partir de um ponto, como a luz que se espalha de uma lâmpada. Você o escreve com radial-gradient() e o usa onde o CSS aceitar uma imagem, normalmente no background-image. Sem opções, ele desenha uma elipse no meio da caixa que chega ao canto mais distante: radial-gradient(#fef3c7, #b45309) dá um centro pálido que brilha até um âmbar profundo.
radial-gradient(#fef3c7, #f59e0b 45%, #78350f)Todo o resto da função muda uma de três coisas: a forma, o tamanho e a posição. Quando você controla essas três, a mesma função desenha brilhos, holofotes, vinhetas, raios de sol e as poças de cor por trás de um gradiente de malha em CSS. Para o lado de design das misturas radiais, veja o guia complementar sobre gradientes radiais.
A sintaxe do radial-gradient()
/* shape size position stops */
radial-gradient(circle closest-side at 30% 40%, #fde047, #ea580c 60%, #1c1917)
/* everything before the first comma is optional */
radial-gradient(#fde047, #ea580c)| Parte | Valores | Padrão |
|---|---|---|
| Forma | circle ou ellipse | ellipse |
| Tamanho | uma palavra-chave, um comprimento para o círculo ou dois comprimentos ou porcentagens para a elipse | farthest-corner |
| Posição | at seguido de qualquer valor que o background-position aceite | at center |
| Interpolação | in oklab, in oklch e outros espaços de cor | sRGB para cores hex |
| Paradas de cor | duas ou mais cores com posições opcionais | obrigatórias |
Uma regra pega muita gente: o tamanho de um círculo precisa ser um comprimento como 200px, nunca uma porcentagem, porque a porcentagem de um retângulo não tem um raio único. As elipses aceitam porcentagens, como em ellipse 60% 40%. A referência do MDN para o radial-gradient() lista a gramática completa.
Círculo ou elipse
A elipse se estica com a caixa: num banner largo o brilho é largo e num story alto ele é alto. O círculo continua redondo faça o que a caixa fizer. Use elipses em fundos que devem preencher o contêiner de modo uniforme e círculos para tudo que deva parecer uma fonte de luz, um planeta ou o brilho de um botão.
Palavras-chave de tamanho: de closest-side a farthest-corner
O tamanho decide onde cai a última parada de cor, que é onde fica a forma final do gradiente. As quatro palavras-chave medem do centro até o lado ou o canto mais próximo ou mais distante da caixa. Elas só parecem diferentes quando o centro está deslocado, por isso todos os exemplos abaixo partem de 30% 40%.
Na prática, o closest-side serve a formas contidas, como pontos e selos, porque a cor nunca escapa da borda mais próxima. O farthest-corner serve a fundos, porque a mistura cobre a caixa inteira. Quando precisar de controle exato, informe um comprimento: circle 180px at 50% 0 é um brilho de 180 pixels pendurado na borda superior.
Posicionando com at
A palavra-chave at posiciona o centro com os mesmos valores do background-position: palavras como at top right, porcentagens como at 20% 80% ou comprimentos como at 40px 60px. O centro pode até ficar fora da caixa, como em at 50% 120%, que dá um brilho de horizonte subindo de baixo da borda inferior.
Brilhos radiais em camadas
O padrão radial mais útil são vários gradientes empilhados num só background-image, cada um se dissolvendo em transparent, sobre uma cor escura chapada. Cada camada é uma poça de luz no seu próprio lugar. Como a primeira camada é pintada por cima, coloque primeiro o brilho mais forte e menor.
.glow {
background-color: #0b0a1a;
background-image:
radial-gradient(circle at 20% 25%, rgb(124 58 237 / 0.55), transparent 45%),
radial-gradient(circle at 80% 30%, rgb(236 72 153 / 0.45), transparent 40%),
radial-gradient(ellipse at 50% 110%, rgb(56 189 248 / 0.4), transparent 60%);
}Mais dois padrões cobrem quase todo o resto. Uma vinheta escurece as bordas: radial-gradient(ellipse, transparent 55%, rgb(0 0 0 / 0.55)) sobreposta a uma foto. Um holofote segue o ponteiro quando você alimenta a posição com propriedades personalizadas, como radial-gradient(circle 240px at var(--x) var(--y), rgb(255 255 255 / 0.15), transparent), com algumas linhas de JavaScript definindo --x e --y no pointermove.
Gradientes radiais repetidos
O repeating-radial-gradient() repete suas paradas para fora até a caixa ficar cheia, então um par de paradas duras vira anéis. Use comprimentos nas posições das paradas para que a largura do anel se mantenha. É a base de texturas de ondulação, de alvo e de meio-tom, e o guia de padrões CSS traz mais.
Evite
- Porcentagens no tamanho de um círculo, que são inválidas
- Brilhos fortes que terminam numa borda dura porque a última parada é opaca
- Centralizar todos os brilhos em 50% 50%
- Cinco brilhos sobrepostos com a mesma força
Faça
- Comprimentos para círculos, porcentagens para elipses
- Dissolver cada brilho em
transparent - Posicionar os brilhos fora do centro, perto dos cantos ou abaixo da borda
- Um brilho dominante e um ou dois mais discretos
Perguntas frequentes
Como faço um gradiente circular em CSS?
Use radial-gradient(circle, cor1, cor2). Escrever circle mantém a forma redonda; sem isso você obtém uma elipse que se estica com a caixa.
Como movo o centro de um gradiente radial?
Acrescente at e uma posição depois da forma e do tamanho, por exemplo radial-gradient(circle at 20% 30%, #c4b5fd, #1e1b4b). As posições funcionam como no background-position.
O que significa farthest-corner?
Ele dimensiona o gradiente para que a última parada de cor chegue ao canto da caixa mais distante do centro. É o tamanho padrão.
Um gradiente radial circular pode usar tamanho em porcentagem?
Não. O círculo precisa de um único comprimento, como 200px. As elipses podem usar duas porcentagens, como ellipse 60% 40%.
Como faço um efeito de brilho com gradientes CSS?
Sobreponha um ou mais valores radial-gradient() que vão de uma cor semitransparente a transparent, sobre um background-color escuro.
Escrito pelo 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


