Filtros CSS
As animações escreveram uma linha do tempo. Os transforms moveram onde os pixels ficam. Os filtros mudam como esses pixels aparecem: blur suave atrás de uma modal, miniaturas em grayscale que ganham cor no hover, foto realçada com brightness e contrast — no mesmo lugar do fluxo.
O que faz filter
A propriedade filter aplica um ou mais efeitos de pós-processamento no resultado pintado do elemento (em geral com descendentes, como um grupo). Largura, altura e fluxo do documento ficam iguais; só muda o aspecto visual. filter: none (valor inicial) remove os efeitos.
Encadeie funções num único valor filter, separadas por espaço — espírito parecido com transforms, mas aqui as ferramentas são visuais, não espaciais: filter: brightness(1.1) contrast(1.05) saturate(1.2);
Funções filter de relance
📊 Funções filter CSS comuns
| Função | Papel típico |
|---|---|
blur(radius) |
Suavizar bordas / efeito fosco (px ou comprimento similar) |
brightness(%) |
Clarear ou escurecer (1 / 100% = inalterado) |
contrast(%) |
Intensificar ou achatar a gama tonal |
grayscale(%) |
Tirar cor (1 = cinza total) |
saturate(%) |
Aumentar ou reduzir intensidade da cor |
hue-rotate(angle) |
Rodar matizes na roda cromática |
opacity(%) |
Esmaecer o resultado filtrado (relacionado com, mas distinto de, a propriedade opacity) |
sepia(%) / invert(%) |
Tom vintage quente / inverter tons |
drop-shadow(…) |
Sombra que segue a forma alpha (ícones, contornos de texto) |
none |
Remover filtros |
Percentagens e números simples costumam funcionar (grayscale(1) ≈ grayscale(100%)). Escolha um estilo no projeto e mantenha-o.
Cartões em grayscale que acordam no hover
Padrão clássico de galeria: muted por defeito, cor plena no hover. Uma transição curta em filter deixa a restauração intencional — movimento das lições anteriores, aspeto desta.
.thumb {
filter: grayscale(1);
transition: filter 0.25s ease;
}
.thumb:hover,
.thumb:focus-visible {
filter: grayscale(0);
}
grayscale(0) é cor plena. Mantenha a transição em filter para mudanças pequenas; animar blur pesado em fotos grandes pode ser caro.
Blur suave para destaque
blur() suaviza o elemento. Use raio modesto em sobreposição ou camada de fundo — não no body inteiro — para o texto continuar legível.
.modal-scrub {
filter: blur(6px);
transform: scale(1.02);
}
.modal-dialog {
/* keep the dialog itself sharp — no filter here */
filter: none;
}
Desfocar um ancestral grande também desfoca o texto dentro. Prefira desfocar uma camada de fundo (ou use backdrop-filter abaixo) quando o primeiro plano deve ficar nítido.
Brightness e contrast para fotos
Fotos de produto e imagens hero muitas vezes precisam de um grade leve sem abrir editor de imagem.
.hero-photo {
display: block;
width: 100%;
height: auto;
filter: brightness(1.08) contrast(1.06);
}
.hero-photo.is-muted {
filter: brightness(0.85) contrast(0.95) saturate(0.8);
}
Valores um pouco acima de 1 clareiam ou reforçam contraste; abaixo de 1 recuam. Ajustes pequenos parecem acabamento; saltos grandes parecem falsos.
Empilhar vários filtros
Uma declaração pode combinar tom, cor e suavidade. A ordem pode importar em pilhas complexas — escreva o visual pretendido da esquerda para a direita e confirme no browser.
.sticker {
filter: saturate(1.35) hue-rotate(12deg) blur(0.3px);
}
.sticker.is-print {
filter: grayscale(0.15) contrast(1.1);
}
Comece com uma ou duas funções. Só acrescente quando o design precisar — cada filtro extra é mais trabalho de GPU em superfícies grandes.
drop-shadow() vs box-shadow
box-shadow segue a caixa de borda. drop-shadow() segue a silhueta alpha — ideal para PNGs transparentes e ícones em que a sombra deve abraçar o glifo, não um retângulo.
.icon-glow {
width: 2.5rem;
height: 2.5rem;
filter: drop-shadow(0 4px 6px rgba(15, 23, 42, 0.35));
}
.icon-glow:hover {
filter: drop-shadow(0 6px 10px rgba(37, 99, 235, 0.45));
}
drop-shadow() não suporta inset como box-shadow. Para elevação reentrante de cartão, mantenha box-shadow da lição Effects.
Backdrop filter — blur no que fica atrás
backdrop-filter afeta o conteúdo visível através de um elemento translúcido (vidro fosco). O elemento precisa de fundo semi-transparente; senão não há nada para amostrar.
Ideia de exemplo: background: rgba(255, 255, 255, 0.55); backdrop-filter: blur(10px); num cabeçalho fixo sobre um hero movimentado. Suporte amplo em browsers modernos; mantenha fundo sólido de fallback se o blur puder ser ignorado.
Opacidade no filtro vs propriedade opacity
filter: opacity(0.5) esmaece a pintura filtrada. A propriedade opacity esmaece o elemento e cria um grupo de composição que muitas vezes afeta empilhamento e filhos. Para «todo o controlo, incluindo filhos, esmaece junto», a propriedade opacity costuma ser mais clara. Use opacity() no filtro quando faz parte de uma pilha de filtros com blur ou grades de cor.
Experimente
- Coloque
filter: grayscale(1)na imagem de um cartão; restaure comgrayscale(0)no:hoveretransition: filter 0.2s ease. - Suavize uma camada de fundo com
blur(8px); mantenha o texto em primeiro plano sem filtro. - Faça grade numa foto com
brightness(1.1) contrast(1.05); depois aproxime ambos de1até parecer natural. - Empilhe
saturate(1.4) hue-rotate(20deg)num sticker; remova uma função e compare. - Sombreie um ícone PNG transparente com
drop-shadow(...); compare combox-shadownuma caixa quadrada. - Opcional: barra fosca com
backgroundtranslúcido +backdrop-filter: blur(12px).
Erros comuns
- Aplicar
blur()forte numa secção grande da página com texto legível - Esperar que
drop-shadow()aceiteinsetcomobox-shadow - Usar
filter: opacity()quando umopacitysimples no elemento seria mais claro - Animar filtros pesados em imagens grandes em cada frame de scroll sem verificar desempenho
- Definir
backdrop-filterem fundo totalmente opaco — nada se vê atrás, logo não há efeito fosco
Resumo
filtermuda o aspeto dos pixels pintados; o fluxo de layout fica no sítio- Encadeie blur, brightness, contrast, grayscale, saturate e afins num valor
- Prefira
drop-shadow()para sombras que seguem alpha;box-shadowpara elevação de caixa backdrop-filterfosca o que aparece atrás de uma camada translúcida- Effects & Motion fecha aqui; o módulo seguinte é Modern Toolkit — começando com variáveis CSS
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo