A versão curta
- Os gradientes do modo escuro devem ser redesenhados para o tema escuro, porque as mesmas cores saturadas que ficam equilibradas sobre branco parecem duras e ofuscantes sobre um fundo escuro.
- Em fundos escuros, baixa o croma das cores do gradiente, limita a cor viva a áreas pequenas e usa um quase preto tingido para o matiz da tua marca em vez de preto puro.
- Troca os gradientes entre temas guardando as suas cores em propriedades personalizadas CSS e redefinindo-as dentro de uma media query prefers-color-scheme: dark.
- A função CSS light-dark() escolhe entre duas cores consoante o color-scheme em vigor, o que mantém os dois valores lado a lado.
- Os gradientes escuros formam faixas de forma mais visível do que os claros, por isso vale a pena acrescentar uma camada leve de grão no modo escuro.
Nesta página
Os gradientes do modo escuro ficam melhor quando lhes dás cores próprias em vez de reaproveitares as do tema claro. Sobre um fundo escuro o olho adapta-se e cada cor saturada parece mais brilhante, por isso um gradiente que parecia calmo sobre branco começa a ofuscar. Baixa o croma, limita a cor viva a áreas pequenas, tinge o fundo em vez de usares preto puro e troca os valores com prefers-color-scheme ou light-dark(). A profundidade fica; o brilho ofuscante desaparece.
Porque é que os gradientes do tema claro falham no escuro
Três coisas mudam quando a página escurece. As grandes áreas claras passam a ser a coisa mais brilhante da sala, o que se lê como ofuscação e não como cor. As sombras deixam de funcionar, por isso os gradientes que dependiam de arestas escurecidas para dar profundidade perdem-na. E os passos entre tons escuros ficam mais fáceis de ver, por isso os gradientes subtis começam a formar faixas. Design em modo escuro trata do tema em geral; esta página trata dos gradientes.
Cinco regras para gradientes no modo escuro
- 1
Tinge o fundo
Usa um quase preto que tenda para o teu matiz, como
#0b0a14para marcas violeta, em vez de#000000. O preto puro faz a cor parecer colada. - 2
Baixa o croma
Reduz a saturação em cerca de um terço nas áreas grandes. Em OKLCH, mantém o matiz e reduz o valor de C.
- 3
Encolhe a parte brilhante
Deixa a cor viva ocupar um canto ou um brilho, e deixa a maior parte da superfície perto do fundo.
- 4
Eleva, não projetes sombra
Mostra a elevação com superfícies ligeiramente mais claras e gradientes que se iluminam para o topo, já que as sombras desaparecem em fundos escuros.
- 5
Acrescenta grão
O ruído fino quebra os degraus visíveis nas misturas escuras. Gradientes com grão tem a receita.
Alternar gradientes com prefers-color-scheme
Guarda as cores do gradiente, não gradientes inteiros, em propriedades personalizadas. Assim o tema escuro só tem de redefinir as cores, e todos os componentes que as usam se atualizam. É o mesmo padrão descrito em variáveis CSS para temas.
:root {
color-scheme: light dark;
--ground: #faf8ff;
--glow: #c4b5fd;
--glow-2: #f9a8d4;
--hero: radial-gradient(circle at 80% 15%, var(--glow) 0%, transparent 45%),
radial-gradient(circle at 10% 90%, var(--glow-2) 0%, transparent 50%),
var(--ground);
}
@media (prefers-color-scheme: dark) {
:root {
--ground: #0b0a14;
--glow: #4c1d95;
--glow-2: #1e3a8a;
}
}
.hero {
background: var(--hero);
}Repara que os brilhos escuros são mais profundos, não mais brilhantes. Sobre um fundo escuro, uma cor só precisa de ser um pouco mais clara do que o que a rodeia para se ler como luz.
Usar light-dark()
A função light-dark() devolve a primeira cor num esquema claro e a segunda num esquema escuro. Precisa de color-scheme: light dark no elemento ou num antecessor, e é suportada no Chrome, Edge, Safari e Firefox atuais. Mantém os dois valores numa só linha, o que facilita rever uma paleta.
:root {
color-scheme: light dark;
}
.card {
background: linear-gradient(
180deg,
light-dark(#ffffff, #1a1530) 0%,
light-dark(#f5f3ff, #0b0a14) 100%
);
color: light-dark(#1e1b2e, #e9e5f5);
}Suportar um alternador manual de tema
Muitos sites deixam as pessoas sobrepor a definição do sistema. Põe a escolha no elemento raiz e limita as variáveis a ela. A media query trata do predefinido; o atributo ganha quando alguém escolhe.
:root[data-theme="dark"] {
color-scheme: dark;
--ground: #0b0a14;
--glow: #4c1d95;
--glow-2: #1e3a8a;
}
:root[data-theme="light"] {
color-scheme: light;
}Reajustar um gradiente para o modo escuro
Aqui fica o mesmo gradiente de marca ajustado paragem a paragem. Trabalhar em OKLCH torna isto previsível, porque a luminosidade e o croma são números separados; OKLCH explicado mostra porquê.
oklch(98% 0.01 295)Tema escuro
oklch(15% 0.03 295)Alteração
Tema claro
oklch(85% 0.09 295)Tema escuro
oklch(35% 0.15 295)Alteração
oklch(84% 0.10 350)Tema escuro
oklch(40% 0.12 265)Alteração
Tema claro
oklch(45% 0.20 295)Tema escuro
oklch(82% 0.09 295)Alteração
radial-gradient(circle at 80% 15%, oklch(35% 0.15 295) 0%, transparent 45%), radial-gradient(circle at 10% 90%, oklch(40% 0.12 265) 0%, transparent 50%), linear-gradient(oklch(15% 0.03 295), oklch(15% 0.03 295))Texto sobre gradientes escuros
O texto claro sobre um gradiente escuro costuma ter contraste de sobra, mas verifica-o onde o gradiente é mais brilhante, não onde é mais escuro. Um título em #e2e8f0 sobre #0b0a14 está muito acima dos 4,5:1 que o WCAG pede ao texto corrido; o mesmo título sobre um brilho violeta intenso pode não estar. Evita também texto corrido em branco puro sobre quase preto: o contraste muito alto causa halação em alguns leitores, por isso um branco suave e sujo é mais gentil. Contraste de cor e acessibilidade tem os números.
Evita no modo escuro
- Fundo preto puro com paragens saturadas
- O gradiente do tema claro, escurecido
- Grandes áreas de cor néon
- Parágrafos em branco puro
- Gradientes escuros lisos sem grão
Faz
- Um fundo quase preto tingido
- Um conjunto separado de paragens escuras
- A cor como luz de um canto
- Texto em branco sujo, cerca de
#e9e5f5 - Uma camada de ruído fino para esconder as faixas
Para mais paletas escuras, fundos de gradiente escuros tem um conjunto para copiar. E para publicações sociais e diapositivos, onde não consegues testar cada linha à mão, o Tinta automática do Gradiently escolhe texto claro ou escuro por linha a partir da paleta do próprio Mark, e o Mark move a sua zona mais calma para trás das palavras, por isso um design escuro nunca põe um título sobre o seu brilho mais forte.
Perguntas frequentes
Como mudo um gradiente no modo escuro?
Põe as cores do gradiente em propriedades personalizadas CSS e redefine-as dentro de @media (prefers-color-scheme: dark). O gradiente atualiza-se onde quer que use essas variáveis.
Posso usar light-dark() dentro de um gradiente?
Sim, em cada paragem de cor, já que o light-dark() devolve uma cor. Precisa de color-scheme: light dark no elemento ou num antecessor.
Porque é que os meus gradientes parecem demasiado brilhantes no modo escuro?
Os olhos adaptam-se aos ecrãs escuros, por isso as cores saturadas parecem mais fortes. Baixa o croma, escurece as paragens e limita a cor brilhante a áreas pequenas.
O modo escuro deve usar preto puro?
Normalmente não, nos gradientes. Um quase preto tingido para o matiz da tua marca faz as cores misturarem-se com naturalidade e reduz o contraste duro.
Porque é que o meu gradiente escuro mostra riscas?
Os tons escuros ficam muito próximos em cor de 8 bits, por isso os degraus tornam-se visíveis. Acrescenta uma camada leve de grão e evita a compressão pesada.
Escrito pela Gradiently
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