Remoção de ::shadow e /deep/ no Chrome 63

A partir do Chrome 63, não é possível usar os seletores de perfuração de sombra ::shadow e /deep/ para estilizar o conteúdo dentro de uma raiz de sombra.

  • O combinador /deep/ vai funcionar como um seletor descendente. x-foo /deep/ div vai funcionar como x-foo div.
  • O pseudoelemento ::shadow não corresponde a nenhum elemento.

A decisão de remover

Os métodos ::shadow e /deep/ foram descontinuados na versão 45 do Chrome. Isso foi decidido por todos os participantes no encontro sobre componentes da Web de abril de 2015.

A principal preocupação com os seletores de perfuração de sombra é que eles violam o encapsulamento e criam situações em que um componente não pode mais mudar a implementação interna.

A especificação CSS Shadow Parts está sendo avançada como uma alternativa aos seletores de piercing de sombra. As partes de sombra permitem que o autor do componente exponha elementos nomeados de uma maneira que preserva o encapsulamento e ainda permite que os autores da página estilizem várias propriedades de uma só vez.

O que devo fazer se meu site usar ::shadow e /deep/?

Os seletores ::shadow e /deep/ afetam apenas os componentes legados do Shadow DOM v0. Se você estiver usando o Shadow DOM v1, não será necessário mudar nada no site.

Você pode usar o Chrome Canary para verificar se o site não é afetado por essas novas mudanças. Se você notar problemas, tente remover o uso de ::shadow e /deep/. Se for muito difícil remover o uso desses seletores, considere mudar do DOM de sombra nativo para o polyfill de DOM de sombra. Você só vai precisar fazer essa mudança se o site depender do DOM shadow v0 nativo.

Mais informações

Intent to remove | Chromestatus Tracker | Chromium Bug