CSS e web

Gradiente cónico em CSS: círculos, gráficos circulares e brilho

O conic-gradient() varre a cor à volta de um ponto como o ponteiro de um relógio. Essa ideia desenha círculos cromáticos, gráficos circulares, gráficos em anel, brilho metálico e explosões de raios.

GradientlyConta Gradiently verificada··5 min de leitura
Capa: Found Dynamo · GR·787F·7V

A versão curta

  • Um gradiente cónico em CSS coloca as cores à volta de um ponto central, varrendo no sentido dos ponteiros do relógio a partir do topo, em vez de ao longo de uma linha ou para fora em anéis.
  • As paragens de cor de um gradiente cónico usam ângulos ou percentagens de uma volta completa, por isso 25% e 90deg significam a mesma posição.
  • As paragens duras transformam um gradiente cónico em fatias, o que é a forma mais rápida de desenhar um gráfico circular em CSS.
  • A palavra-chave from roda o ponto onde a varredura começa e at move o ponto central.
  • O repeating-conic-gradient() repete as suas paragens à volta do círculo e, combinado com background-size, desenha tabuleiros de xadrez e explosões de raios.
Nesta página

Um gradiente cónico em CSS varre a cor à volta de um ponto central, como o ponteiro de um relógio varre o mostrador. Enquanto um gradiente linear muda ao longo de uma linha e um gradiente radial muda para fora a partir do centro, o conic-gradient() muda com o ângulo. Começa no topo, corre no sentido dos ponteiros do relógio e usa-se onde quer que o CSS aceite uma imagem. Isso torna-o a ferramenta natural para círculos cromáticos, gráficos circulares, anéis de carregamento e os realces angulares do metal escovado.

Um círculo cromático simplesconic-gradient(#ef4444, #eab308, #22c55e, #06b6d4, #3b82f6, #a855f7, #ef4444)
Sete paragens, distribuídas por igual numa volta completa. Repetir a primeira cor no fim fecha a junção no topo.

Se estás a escolher entre tipos de gradiente para um design em vez de aprender a sintaxe, os tipos de gradientes e o guia de design sobre gradientes cónicos são melhores pontos de partida.

A sintaxe do conic-gradient()

css
/*               start angle   centre        stops */
conic-gradient(from 90deg at 30% 50%, #0ea5e9, #6366f1, #0ea5e9)

/* stops as angles or as percentages of the turn */
conic-gradient(#f59e0b 0deg 90deg, #1e293b 90deg)
conic-gradient(#f59e0b 0% 25%, #1e293b 25%)
Tudo o que vem antes da primeira vírgula é opcional. As duas listas de paragens das últimas duas linhas desenham a mesma fatia de um quarto.
ParteExemploPredefinição
Ângulo inicialfrom 45degfrom 0deg, a direito para cima
Centroat 30% 50%, at top leftat center
Interpolaçãoin oklch, in hsl longer huesRGB para cores hexadecimais
Posição da paragem90deg, 0.25turn, 25%distribuídas por igual pela volta
As partes do conic-gradient(). As posições das paragens medem-se à volta do círculo, não ao longo de uma linha.

Os ângulos correm no sentido dos ponteiros do relógio a partir do topo: 90deg são as três horas, 180deg as seis. A definição completa está na página do conic-gradient() da MDN. O suporte nos navegadores é universal há anos no Chrome, Edge, Safari e Firefox atuais, por isso não são precisos prefixos.

Rodar e mover a varredura

O from roda o gradiente todo, o que dá jeito quando a junção entre a primeira e a última cor ficaria de outro modo no topo. O at move o centro. Movê-lo para um canto transforma o círculo num leque de raios, e movê-lo para fora da caixa dá uma lavagem angular suave que não se parece nada com um círculo.

A mesma família de índigo, violeta e rosa, rodada e movida. Na versão do canto, um quarto de volta enche a caixa.

Gráficos circulares e em anel em CSS

Dá a cada fatia um início e um fim, e deixa cada uma começar onde a anterior acabou. Escrever 0 como segunda posição da paragem é um atalho: uma posição menor do que a anterior é limitada a ela, por isso a nova cor começa exatamente onde a última acabou. Arredonda o elemento com border-radius: 50% e abre um buraco com uma máscara radial para transformar o gráfico circular num gráfico em anel.

css
.pie {
  width: 12rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: conic-gradient(
    #6366f1 0 40%,   /* 40% */
    #22d3ee 0 65%,   /* 25% */
    #f59e0b 0 85%,   /* 20% */
    #e2e8f0 0        /* the rest, 15% */
  );
}

.donut {
  /* same background as .pie, then a hole */
  mask: radial-gradient(farthest-side, transparent 58%, #000 59%);
}
Um gráfico circular de quatro fatias e a linha que o transforma em gráfico em anel. Usa propriedades personalizadas para as percentagens se os dados mudarem.
Fatias: 40, 25, 20 e 15%conic-gradient(#6366f1 0 40%, #22d3ee 0 65%, #f59e0b 0 85%, #e2e8f0 0)
O fundo do gráfico circular sozinho. Num elemento redondo, lê-se como um gráfico.

As arestas duras nos gradientes cónicos podem parecer ligeiramente serrilhadas ao longo das linhas das fatias nalguns navegadores. Se isso te incomodar, deixa uma fração de grau entre as paragens, como #6366f1 0 39.8%, #22d3ee 40.2% 65%, para que a aresta ganhe um fio de mistura.

Círculos cromáticos com interpolação de matiz

Um círculo cromático costuma precisar de seis ou sete paragens. Com métodos de interpolação, podes pedir ao navegador que percorra ele próprio o círculo dos matizes. O longer hue faz o caminho mais longo entre dois matizes e, quando as duas paragens são a mesma cor, o caminho mais longo é o círculo todo, por isso dois vermelhos dão um espetro completo.

css
.wheel {
  border-radius: 50%;
  background: conic-gradient(in hsl longer hue, #ff0000, #ff0000);
}
Uma cor, duas vezes, e um arco-íris completo pelo meio. Os gradientes OKLCH explicam o matiz mais curto e o mais longo.

Brilho metálico e realces

O metal escovado e os discos polidos apanham a luz em faixas angulares, que é exatamente o que um gradiente cónico desenha. Alterna alguns cinzentos claros e escuros, com espaçamento irregular, e a superfície lê-se como metal. Sobreposto com pouca opacidade a uma cor, o mesmo truque acrescenta brilho a botões e cartões; vê os botões com gradiente para um exemplo trabalhado.

Faixas irregulares de claro e escuro varridas à volta do centro lêem-se como metal polido.

Gradientes cónicos repetidos para padrões

O repeating-conic-gradient() repete a sua lista de paragens ao longo da volta. Paragens curtas e de arestas duras dão explosões de raios. Em par com background-size, um padrão de quartos a duas cores repete-se num tabuleiro de xadrez, um padrão que de outro modo é difícil de desenhar com gradientes. Mais nos padrões em CSS.

Paragens curtas e duras repetidas em toda a volta.
css
.checkerboard {
  background: repeating-conic-gradient(#e2e8f0 0 25%, #ffffff 0 50%) 0 0 / 32px 32px;
}
Um tabuleiro de 16 píxeis: a clássica grelha de transparência por trás dos editores de imagem.

Perguntas frequentes

O que é um gradiente cónico em CSS?

É um gradiente cujas cores mudam com o ângulo à volta de um ponto central, começando no topo e movendo-se no sentido dos ponteiros do relógio, escrito com conic-gradient().

Como faço um gráfico circular com CSS?

Usa paragens duras num gradiente cónico, como conic-gradient(#6366f1 0 40%, #22d3ee 0 65%, #e2e8f0 0), num elemento com border-radius: 50%. Põe também os valores em texto para os leitores de ecrã.

Como rodo um gradiente cónico?

Acrescenta from e um ângulo como primeiro argumento, por exemplo conic-gradient(from 90deg, ...). A varredura passa então a começar às três horas em vez de no topo.

Porque é que as arestas do meu gradiente cónico estão serrilhadas?

As paragens duras não têm mistura, e alguns navegadores desenham o limite sem suavização. Deixar uma fração de grau entre paragens vizinhas suaviza-o.

Os gradientes cónicos funcionam em todos os navegadores?

Sim, as versões atuais do Chrome, Edge, Safari e Firefox suportam conic-gradient() e repeating-conic-gradient() sem prefixos.

Partilhar este guia

Escrito pela GradientlyConta Gradiently verificada

A equipa por trás da Gradiently, uma ferramenta de design construída em torno dos Marks: gradientes vivos que fazem tudo o que crias parecer teu.

Ver o nosso perfil