Od wersji 63 Chrome nie można używać selektorów przenikających cień ::shadow
i /deep/
do stylizowania treści w tle.
- Kombinator
/deep/
będzie działać jako selektor potomków.x-foo /deep/ div
będzie działać jakx-foo div
. - Element pseudo
::shadow
nie będzie pasować do żadnych elementów.
Decyzja o usunięciu
W wersji 45 Chrome zostały wycofane opcje ::shadow
i /deep/
. Taką decyzję podjęli wszyscy uczestnicy spotkania Web Components w kwietniu 2015 r..
Głównym problemem z selektorami przebijającymi cień jest to, że naruszają one enkapsulację i tworzą sytuacje, w których komponent nie może już zmienić swojej implementacji wewnętrznej.
Specyfikacja CSS sekcji cienia jest rozwijana jako alternatywa dla selektorów przebijania cienia. Elementy w tle pozwolą autorowi komponentu na wyświetlanie elementów nazwanych w taki sposób, aby zachować enkapsulację, a jednocześnie umożliwić autorom stron stylizowanie wielu właściwości naraz.
Co zrobić, jeśli moja witryna używa ::shadow i /deep/?
Selektory ::shadow
i /deep/
mają wpływ tylko na starsze komponenty Shadow DOM v0. Jeśli używasz Shadow DOM w wersji 1, nie musisz nic zmieniać w swojej witrynie.
Możesz użyć Chrome Canary, aby sprawdzić, czy Twoja witryna nie ulegnie uszkodzeniu po wprowadzeniu tych zmian. Jeśli zauważysz problemy, spróbuj usunąć elementy ::shadow
i /deep/
. Jeśli trudno jest Ci usunąć użycie tych selektorów, rozważ przejście z natywnego shadow DOM na shady DOM polyfill. Tę zmianę należy wprowadzić tylko wtedy, gdy Twoja witryna korzysta z domyślnego skryptu shadow DOM w wersji 0.