Resumindo
- Gradientes do modo escuro devem ser redesenhados para o tema escuro, porque as mesmas cores saturadas que ficam equilibradas no branco ficam duras e ofuscantes num fundo escuro.
- Em fundos escuros, reduza o chroma das cores do gradiente, limite a cor viva a áreas pequenas e use um quase preto tingido na direção do matiz da marca em vez de preto puro.
- Troque gradientes entre temas guardando as cores em propriedades personalizadas do CSS e redefinindo-as dentro de uma media query prefers-color-scheme: dark.
- A função light-dark() do CSS escolhe entre duas cores conforme o color-scheme em vigor, mantendo os dois valores lado a lado.
- Gradientes escuros formam faixas de modo mais visível que os claros, então vale acrescentar uma camada leve de granulado no modo escuro.
Nesta página
Os gradientes do modo escuro ficam melhores quando recebem cores próprias, em vez de reaproveitar as do tema claro. Num fundo escuro o olho se adapta e toda cor saturada parece mais brilhante, então um gradiente que parecia calmo no branco passa a ofuscar. Reduza o chroma, limite a cor viva a áreas pequenas, tinja o fundo em vez de usar preto puro e troque os valores com prefers-color-scheme ou light-dark(). A profundidade fica; o brilho excessivo vai embora.
Por que gradientes do tema claro falham no escuro
Três coisas mudam quando a página escurece. Áreas grandes e claras viram a coisa mais brilhante do ambiente, o que se lê como ofuscamento, não como cor. As sombras deixam de funcionar, então gradientes que dependiam de bordas escurecidas para dar profundidade a perdem. E os degraus entre tons escuros ficam mais fáceis de ver, então gradientes sutis começam a formar faixas. Design de modo escuro trata do tema em geral; esta página é sobre os gradientes.
Cinco regras para gradientes no modo escuro
- 1
Tinja o fundo
Use um quase preto que puxe para o seu matiz, como
#0b0a14para marcas violeta, em vez de#000000. O preto puro faz a cor parecer colada. - 2
Reduza o chroma
Baixe a saturação em cerca de um terço nas áreas grandes. Em OKLCH, mantenha o matiz e reduza o valor de C.
- 3
Encolha a parte clara
Deixe a cor viva ocupar um canto ou um brilho, e a maior parte da superfície ficar perto do fundo.
- 4
Eleve, não faça sombra
Mostre elevação com superfícies um pouco mais claras e gradientes que clareiam em direção ao topo, já que as sombras somem em fundos escuros.
- 5
Acrescente granulado
Um ruído fino quebra os degraus visíveis em misturas escuras. Gradientes granulados traz a receita.
Alternando gradientes com prefers-color-scheme
Guarde em propriedades personalizadas as cores do gradiente, não gradientes inteiros. Assim o tema escuro só precisa redefinir as cores, e todo componente que as usa se atualiza. É 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);
}Repare que os brilhos escuros são mais profundos, não mais brilhantes. Num fundo escuro, uma cor só precisa ser um pouco mais clara que o entorno para parecer luz.
Usando light-dark()
A função light-dark() devolve a primeira cor em um esquema claro e a segunda em um escuro. Ela precisa de color-scheme: light dark no elemento ou em um ancestral, e é compatível com as versões atuais de Chrome, Edge, Safari e Firefox. Mantém os dois valores numa só linha, o que facilita revisar 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);
}Aceitando um seletor de tema manual
Muitos sites deixam as pessoas sobrescrever a configuração do sistema. Coloque a escolha no elemento raiz e limite suas variáveis a ela. A media query cuida do padrão; o atributo vence 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;
}Reajustando um gradiente para o modo escuro
Eis o mesmo gradiente de marca ajustado ponto a ponto. Trabalhar em OKLCH torna isso previsível, porque luminosidade e chroma são números separados; OKLCH explicado mostra por quê.
oklch(98% 0.01 295)Tema escuro
oklch(15% 0.03 295)Mudança
Tema claro
oklch(85% 0.09 295)Tema escuro
oklch(35% 0.15 295)Mudança
oklch(84% 0.10 350)Tema escuro
oklch(40% 0.12 265)Mudança
Tema claro
oklch(45% 0.20 295)Tema escuro
oklch(82% 0.09 295)Mudança
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
Texto claro sobre um gradiente escuro costuma ter contraste de sobra, mas confira onde o gradiente é mais brilhante, não onde é mais escuro. Um título em #e2e8f0 sobre #0b0a14 fica muito acima dos 4,5:1 que a WCAG pede para texto corrido; o mesmo título sobre um brilho violeta intenso talvez não. Evite também parágrafos em branco puro sobre quase preto: contraste altíssimo causa halação para alguns leitores, então um off-white suave é mais gentil. Contraste de cores e acessibilidade traz os números.
Evite no modo escuro
- Fundo preto puro com pontos saturados
- O gradiente do tema claro, escurecido
- Grandes áreas de cor neon
- Parágrafos em branco puro
- Gradientes escuros lisos, sem granulado
Faça
- Um fundo quase preto tingido
- Um conjunto separado de pontos escuros
- Cor como luz vinda de um canto
- Texto off-white, em torno de
#e9e5f5 - Uma camada de ruído fino para esconder as faixas
Para mais paletas escuras, fundos em gradiente escuro traz um conjunto para copiar. E para posts e slides, em que você não consegue testar cada linha à mão, a Tinta automática do Gradiently escolhe tinta clara ou escura em cada linha a partir da paleta do próprio Mark, e o Mark leva sua área mais calma para trás das palavras, então um design escuro nunca põe um título sobre o brilho mais forte.
Perguntas frequentes
Como mudo um gradiente no modo escuro?
Coloque as cores do gradiente em propriedades personalizadas do CSS e redefina-as dentro de @media (prefers-color-scheme: dark). O gradiente se atualiza onde usa essas variáveis.
Posso usar light-dark() dentro de um gradiente?
Sim, em cada ponto de cor, já que o light-dark() devolve uma cor. Ele precisa de color-scheme: light dark no elemento ou em um ancestral.
Por que meus gradientes parecem brilhantes demais no modo escuro?
Os olhos se adaptam a telas escuras, então cores saturadas parecem mais fortes. Reduza o chroma, escureça os pontos e limite a cor viva a áreas pequenas.
O modo escuro deve usar preto puro?
Em geral não, para gradientes. Um quase preto tingido na direção do matiz da marca faz as cores se misturarem naturalmente e reduz o contraste agressivo.
Por que meu gradiente escuro mostra listras?
Tons escuros ficam muito próximos em cor de 8 bits, então os degraus ficam visíveis. Acrescente uma camada leve de granulado e evite compressão pesada.
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