
Se você ainda não viu, no meu último post falei sobre a novidade CSS blend modes. Este post é uma continuação do mesmo, pois irei falar sobre como será possível aplicar os mesmos blend modes em outros lugares, como por exemplo em fundos (propriedade background
) e em sombras (propriedades box-shadow
e text-shadow
).
O draft da especificação Compositing and Blending 1.0 introduz mais 5 novas propriedades: background-blend-mode
, background-alpha-compositing
, box-shadow-blend-mode
, text-shadow-blend-mode
e foreground-blend-mode
. Falaremos sobre cada uma delas a seguir.
Blend modes em backgrounds
Também é possível aplicar um blend mode apenas no background de um elemento. Para isso temos 2 novas propriedades CSS: background-alpha-compositing
e background-blend-mode
.
Para ilustrar as aplicações deste post, iremos usar a seguinte imagem de exemplo:

Vamos considerar que a imagem acima pode ser composta por uma <div>
geral que tem o Moe’s (bar do Moe) como fundo e por mais uma <div>
de fundo que contém o conteúdo – a imagem do Homer e seus nomes (HTML abaixo):
<div class="bar">
<div class="fundo-azul">
<img class="homer" src="homer.png" />
<h1>Homer</h1>
<h2>Simpson</h2>
</div>
</div>
background-blend-mode
Como vimos no post anterior, teremos 16 blend modes disponíveis, e poderemos aplicá-los da mesma maneira para os backgrounds com a propriedade background-blend-mode
.
Aplicando o blend mode exclusion no fundo da div.fundo-azul
:

.fundo-azul {
background-color: #4DA6FF; /* azul claro */
background-blend-mode: exclusion;
}
Perceba que o blend mode apenas é aplicado ao background do elemento, ou seja, no fundo azul – deixando os elementos filhos da div.fundo-azul
inalterados.
background-alpha-compositing
Assim como a propriedade alpha-compositing
, define o modo de composição usado quando é realizada a composição em um background de um elemento. Seu valor padrão é source-over
, e existem mais 12 possibilidades. Para saber mais, visite a seção sobre Composição avançada do draft da especificação W3C.
Blend modes em foregrounds
Ao contrário dos backgrounds, com a propriedade foreground-blend-mode
será possível definir o blend mode para o texto e elementos filhos.
foreground-blend-mode
Vamos definir o foreground-blend-mode
na div.fundo-azul
como exclusion:

.fundo-azul {
foreground-blend-mode: exclusion; /* elementos filhos */
/* ... */
}
Assim todos os elementos aninhados no elemento div.fundo-azul
(a imagem e os textos) serão renderizados com o blend mode determinado e o fundo permanecerá inalterado.
Blend modes em sombras
Já tá virando brincadeira, né. Mas é verdade, blend modes apenas em sombras! Sabemos que em CSS temos duas propriedades que definem sombras: box-shadow
e text-shadow
, de maneira análoga teremos também mais duas propriedades para aplicação de blend modes em sombras: box-shadow-blend-mode
e text-shadow-blend-mode
.
box-shadow-blend-mode
Vamos criar um efeito de fading na div.fundo-azul
(como se ela estivesse desaparecendo nas suas extremidades). Para conseguirmos isto apenas precisamos aplicar uma sombra da mesma cor (azul claro) e aplicar o mesmo blend mode (exclusion).

.fundo-azul {
/* aplicando a sombra */
box-shadow: 0px 0px 22px 22px #4DA6FF; /* mesma cor que o fundo */
box-shadow-blend-mode: exclusion; /* mesmo blend mode que o fundo */
}
Legal, hein!?
text-shadow-blend-mode
Agora é a vez de aplicar um blend mode em sombras de texto com a propriedade text-shadow-blend-mode
. Vamos aplicar o blend mode overlay na sombra do elemento <h1>
:

h1 {
/* aplicando a sombra no texto */
text-shadow: 7px 7px 1px black;
text-shadow-blend-mode: overlay;
}
Perceba como a sombra de <h1>
(“Homer”) ficou bem direfente da sombra de <h2>
(“Simpson”), pois ela realiza um blending com o fundo azul.
Multiplicidade de valores
Se qualquer uma das propriedades background
, box-shadow
ou text-shadow
forem definidar com múltiplos valores, também será possível definir seus respectivos blend modes com múltiplos valores separando-os por ,
. Abaixo um exemplo com text-shadow-blend-mode
:

#psicodelia {
color: white;
font-size: 120px;
/* aplicando multiplas sombras no texto */
text-shadow: -10px 0px 12px #2692FF,
10px 0px 12px #2692FF,
-23px 0px 12px #FF7F00,
23px 0px 12px #FF7F00;
/* aplicando os blend modes para cada sombra */
text-shadow-blend-mode: difference,
exclusion,
difference,
exclusion;
}
O mesmo serve para background-blend-mode
e box-shadow-blend-mode
.
Suporte
Nenhum navegador ainda se atreveu em implementar nada sobre blend modes, afinal de contas a especificação ainda tem que amadurecer um pouco. E também não há previsões disso.
Como testar?
A Adobe fez um fork do Chromium, implementou algumas funcionalidades e disponibilizou para demonstrar o uso dos blend modes. Se você estiver afim de testar, faça o download do Chromium deles aqui e teste acessando essa página de testes. Eu fiz o teste e é show de bola.
Por hoje é isso aê!