Mercado
Preços
Iniciar sessãoComeçar
Guia PráticoCSS e web
CSS e web

color-mix() em CSS: misturar cores no navegador

O color-mix() deixa o navegador fazer a matemática das cores que antes fazias num pré-processador ou a olho. Escolhe o espaço de cor certo e uma cor de marca pode produzir uma paleta inteira de tons claros, escuros e translúcidos.

GradientlyConta Gradiently verificada·1 de outubro de 2026·6 min de leitura
Capa: Rain Rampart · GR·A80B·X7

A versão curta

  • A função CSS color-mix mistura duas cores num espaço de cor nomeado, por exemplo color-mix(in oklab, #7c3aed 40%, white).
  • Se indicares só uma percentagem, a outra cor fica com o resto; sem nenhuma, a mistura é metade e metade.
  • Misturar em oklab mantém a luminosidade uniforme e evita os meios cinzentos que a mistura em sRGB produz entre tons distantes.
  • Misturar uma cor com transparent é a forma mais limpa de fazer uma versão translúcida de uma cor guardada numa propriedade personalizada.
  • O color-mix() funciona em todos os principais navegadores atuais, por isso é seguro em produção, com uma cor simples como alternativa para os muito antigos.
Nesta página
Sintaxe do color-mix()Em que espaço de cor misturarTons claros e escuros a partir de uma cor de marcaTransparência com color-mix()Erros comuns com color-mix()Suporte nos navegadores e alternativasMisturar cores para gradientes

A função color-mix em CSS, color-mix(), mistura duas cores num espaço de cor à tua escolha e devolve uma nova cor. Escreve color-mix(in oklab, #7c3aed 40%, white) e obténs um violeta pálido com 40 por cento de violeta e 60 por cento de branco, misturado de forma percetual. Funciona em todos os principais navegadores atuais. Aliada às propriedades personalizadas, transforma uma cor de marca em tons claros, escuros, estados de rato por cima e sobreposições translúcidas sem um único hex fixo no código.

Sintaxe do color-mix()

css
/* color-mix(in <colour space>, <colour> [<percentage>], <colour> [<percentage>]) */

.a { color: color-mix(in oklab, #7c3aed, white); }          /* 50% each */
.b { color: color-mix(in oklab, #7c3aed 40%, white); }      /* 40% violet, 60% white */
.c { color: color-mix(in oklab, #7c3aed, black 30%); }      /* 70% violet, 30% black */
.d { color: color-mix(in srgb, #7c3aed 50%, transparent); } /* violet at half opacity */
.e { color: color-mix(in oklch shorter hue, #2563eb, #f59e0b); }
O espaço de cor vem primeiro e escreve-se por extenso. Os espaços baseados em tom, como oklch e hsl, também aceitam uma direção de tom: shorter, longer, increasing ou decreasing.
Sem percentagens

O navegador usa

50% e 50%

Notas

Uma mistura igual
Uma percentagem, digamos 30%

O navegador usa

30% e 70%

Notas

A outra cor fica com o resto
Duas que somam 100%

O navegador usa

Como escrito

Notas

A forma mais clara de ler mais tarde
Duas que somam mais de 100%

O navegador usa

Reduzidas a 100%

Notas

60% e 60% comporta-se como 50% e 50%
Duas que somam menos de 100%

O navegador usa

Aumentadas, e depois tornadas translúcidas

Notas

20% e 30% dá um resultado com metade da opacidade
EscrevesO navegador usaNotas
Sem percentagens50% e 50%Uma mistura igual
Uma percentagem, digamos 30%30% e 70%A outra cor fica com o resto
Duas que somam 100%Como escritoA forma mais clara de ler mais tarde
Duas que somam mais de 100%Reduzidas a 100%60% e 60% comporta-se como 50% e 50%
Duas que somam menos de 100%Aumentadas, e depois tornadas translúcidas20% e 30% dá um resultado com metade da opacidade
Como se resolvem as percentagens. A última linha surpreende as pessoas: um total abaixo de 100 torna o resultado parcialmente transparente.

Em que espaço de cor misturar

O espaço de cor decide o caminho entre as duas cores. Em sRGB, o navegador faz a média dos números de vermelho, verde e azul, o que é rápido de raciocinar mas não é como os olhos veem. Dois tons distantes passam por um cinzento baço pelo caminho. Em oklab, a mistura segue a luminosidade e a cor percebidas, por isso o meio fica limpo e os passos parecem uniformes. A interpolação de gradientes explica a mesma escolha para gradientes, e aí o efeito vê-se mais facilmente.

Azul a amarelo em três espaços. O ponto médio de cada faixa é exatamente o que o color-mix() devolve a 50 por cento nesse espaço: #808080 em sRGB, um azul-acinzentado claro em oklab.
  • oklab para tons claros, escuros e a maioria das misturas do dia a dia. Luminosidade uniforme, sem queda para cinzento.
  • oklch quando queres que o tom viaje, por exemplo ao misturar duas cores de marca numa terceira que fica entre elas na roda.
  • srgb para misturar com transparent ou condizer com ferramentas de design mais antigas que misturam em sRGB.
  • srgb-linear para mistura de luz com base física, que se lê mais brilhante no meio.

Para o contexto sobre porque os espaços percetuais se comportam melhor, vê o OKLCH explicado. As versões recentes da especificação permitem omitir o espaço de cor e assumir oklab por predefinição, mas o suporte dessa forma abreviada é mais recente, por isso escreve in oklab explicitamente.

Tons claros e escuros a partir de uma cor de marca

O padrão mais útil é uma escala construída a partir de uma só variável. Mistura em direção ao branco para tons claros, em direção ao preto para tons escuros. Muda a variável e cada passo atualiza-se, o que é ideal para produtos com várias marcas ou temas escolhidos pelo utilizador.

css
:root {
  --brand: #7c3aed;

  --brand-100: color-mix(in oklab, var(--brand) 20%, white);
  --brand-200: color-mix(in oklab, var(--brand) 40%, white);
  --brand-300: color-mix(in oklab, var(--brand) 60%, white);
  --brand-400: color-mix(in oklab, var(--brand) 80%, white);
  --brand-500: var(--brand);
  --brand-600: color-mix(in oklab, var(--brand) 80%, black);
  --brand-700: color-mix(in oklab, var(--brand) 60%, black);
}
Uma escala de sete passos a partir de uma cor. Troca --brand por qualquer hex e a escala acompanha.
No que a escala acima se resolve para #7c3aed, calculada em oklab. Misturados em sRGB, os tons claros ficam um pouco mais cinzentos e os escuros um pouco mais lisos.

Misturar com branco e preto puros é um ponto de partida. Para tons claros mais quentes, mistura em direção a um quase branco como #fdf6ec; para tons escuros mais ricos, mistura em direção a um azul-marinho profundo em vez de preto. Assim a escala continua a parecer a tua marca e não uma rampa genérica. Os tons claros, médios e escuros tratam da teoria da cor.

Transparência com color-mix()

Antes do color-mix(), fazer uma versão translúcida de uma cor guardada numa variável obrigava a guardar os canais em separado. Agora misturas com transparent. A quantidade que mantiveres é a opacidade.

css
.badge {
  color: var(--brand);
  background: color-mix(in srgb, var(--brand) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--brand) 30%, transparent);
}

.button:hover {
  background: color-mix(in oklab, var(--brand), black 12%);
}
Um distintivo com tom e um estado de rato por cima a partir da mesma variável. Sem uma segunda cor para manter.

Erros comuns com color-mix()

  • Omitir o espaço de cor em código que tem de correr em navegadores antigos. A declaração inteira é descartada, não só o espaço.
  • Misturar com preto para cada tom escuro. Os tons escuros de cores saturadas ficam baços; mistura antes em direção a uma versão profunda do tom.
  • Esperar que percentagens abaixo de 100 se mantenham opacas. color-mix(in oklab, red 20%, blue 30%) fica meio transparente.
  • Usar hsl para tons claros. A luminosidade em hsl não é percetual, por isso um amarelo e um azul na mesma mistura não se parecem nada com o mesmo passo.

Suporte nos navegadores e alternativas

O color-mix() está disponível no Chrome, no Edge, no Firefox e no Safari desde 2023, e o suporte atual está listado no caniuse. Se precisares de cobrir navegadores muito antigos, declara primeiro uma cor simples e deixa a misturada substituí-la. Os navegadores que não entendem a segunda linha ignoram-na.

css
.card {
  background: #ede9fe;
  background: color-mix(in oklab, var(--brand) 15%, white);
}
A alternativa primeiro, a melhoria depois. A cascata faz o resto.

Um tema completo construído sobre estes padrões, com modos claro e escuro, está nas variáveis CSS para temas.

Misturar cores para gradientes

O color-mix() é útil dentro de gradientes, onde pode calcular uma paragem intermédia a partir de duas cores de marca para que a mistura nunca passe por lama. linear-gradient(135deg, var(--a), color-mix(in oklch, var(--a), var(--b)), var(--b)) dá-te uma terceira paragem no caminho do tom entre as duas. O problema de fundo está tratado nos gradientes lamacentos.

Se a tua cor de marca vive num Mark do Gradiently, a receita do Mark já contém uma família de cores relacionadas escolhidas para funcionarem juntas, e o Mercado permite-te pesquisar por palavras de cor como “violeta profundo” para encontrar um construído em torno do tom de que partes.

Encontra um gradiente só teu

Explora milhares de Marks, cria designs com qualquer um deles gratuitamente e reserva o que parece contigo.

Explorar o Mercado

Perguntas frequentes

O que faz o color-mix() em CSS?

Mistura duas cores num espaço de cor que indicas e devolve o resultado, por exemplo color-mix(in oklab, red 30%, white).

Que espaço de cor devo usar com o color-mix()?

Usa oklab para tons claros, escuros e a maioria das misturas, oklch quando queres que o tom viaje e srgb para misturar com transparent.

Como torno uma cor transparente com o color-mix()?

Mistura-a com transparent: color-mix(in srgb, var(--brand) 20%, transparent) dá a cor da marca com 20 por cento de opacidade.

O color-mix() é suportado em todos os navegadores?

Funciona nas versões atuais do Chrome, Edge, Firefox e Safari. Declara primeiro uma cor simples como alternativa para navegadores mais antigos.

O que acontece se as percentagens não somarem 100?

Os totais acima de 100 são reduzidos. Os totais abaixo de 100 são aumentados e o resultado fica parcialmente transparente.

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

Nesta página

Sintaxe do color-mix()Em que espaço de cor misturarTons claros e escuros a partir de uma cor de marcaTransparência com color-mix()Erros comuns com color-mix()Suporte nos navegadores e alternativasMisturar cores para gradientes

Partilhar este guia

A seguir em CSS e web

Tema com variáveis CSS: claro, escuro e cores de marca

Continua a ler

Todos os guias de CSS e web
CSS e web

Tema com variáveis CSS: claro, escuro e cores de marca

5 min de leitura

Os temas correm mal quando as cores têm o nome do que parecem em vez do que fazem. Dá nome às funções, aponta-as para uma paleta, e o modo claro, o modo escuro e uma segunda marca passam a ser poucas linhas cada.

Cor

OKLCH explicado: cor percetual para designers

6 min de leitura

O HSL prometeu cor legível e quase cumpriu. O OKLCH mantém a parte legível e corrige a mentira sobre a luminosidade, e é por isso que os sistemas de design estão a mudar para ele.

Gradientes

Interpolação de gradientes: sRGB, OKLab e porque importa

6 min de leitura

Escolhe azul e amarelo, mistura-os e o meio fica cinzento. Não são as tuas cores a falhar. É a matemática do espaço de cor a fazer a mistura, e desde o CSS Color 4 podes mudá-la.

Encontra o visual que é só teu.

Cada Mark é um fundo vivo com um só dono. Experimenta um Mark ainda disponível e reserva o teu quando te parecer certo.

Começar a criar

Verificar um certificado

Escreve um número de certificado ou o código de um Mark para veres quem é o dono.

Funciona com o ChatGPT e o Claude

Pede um design à tua IA. Ela cria-o no teu Mark, pronto a editar.

ChatGPTClaude
Como ligar

Produto

  • Mercado
  • Explorar
  • Preços
  • Certificados

Aprender

  • Guia Prático
  • Centro de ajuda
  • Novidades

Programadores

  • Visão geral
  • ChatGPT e Claude
  • Referência da API
  • Chaves de API

Empresa

  • Sobre nós
  • Contactos
  • Iniciar sessão

Legal

  • Termos
  • Privacidade
  • Reembolsos
  • Proteção de Marks
  • Cookies
  • Todas as políticas
Passa pelas letras. Cada uma veste um Mark real.Toca numa letra para veres o seu Mark.Um nome. Dez Marks lá dentro.
© 2026 Gradiently