"::shadow" und "/deep/" werden in Chrome 63 entfernt

Ab Chrome 63 können Sie die Shadow-Piercing-Selektoren ::shadow und /deep/ nicht mehr verwenden, um Inhalte innerhalb eines Shadow-Roots zu gestalten.

  • Der Kombinator /deep/ fungiert als Nachkommensselektor. x-foo /deep/ div funktioniert wie x-foo div.
  • Das Pseudoelement ::shadow stimmt mit keinem Element überein.

Entscheidung über die Entfernung

Die Elemente ::shadow und /deep/ wurden in Chrome-Version 45 eingestellt. Das wurde von allen Teilnehmern des Web Components-Meetups im April 2015 beschlossen.

Das Hauptproblem bei Shadow-Piercing-Selektoren besteht darin, dass sie die Kapselung verletzen und Situationen schaffen, in denen eine Komponente ihre interne Implementierung nicht mehr ändern kann.

Die Spezifikation CSS Shadow Parts wird als Alternative zu Selektoren für Shadow Piercing weiterentwickelt. Mit Shadow Parts können Komponentenautoren benannte Elemente so verfügbar machen, dass die Kapselung erhalten bleibt und Seitenautoren trotzdem mehrere Eigenschaften gleichzeitig formatieren können.

Was sollte ich tun, wenn auf meiner Website „::shadow“ und „/deep/“ verwendet werden?

Die Selektoren ::shadow und /deep/ wirken sich nur auf Legacy-Shadow-DOM-v0-Komponenten aus. Wenn Sie Shadow DOM v1 verwenden, müssen Sie auf Ihrer Website nichts ändern.

Mit Chrome Canary können Sie prüfen, ob Ihre Website durch diese neuen Änderungen beeinträchtigt wird. Wenn Probleme auftreten, entfernen Sie alle Verwendungen von ::shadow und /deep/. Wenn es zu schwierig ist, die Verwendung dieser Selektoren zu entfernen, sollten Sie vom nativen Shadow DOM zum Shady DOM-Polyfill wechseln. Diese Änderung ist nur erforderlich, wenn Ihre Website auf dem nativen Shadow DOM v0 basiert.

Weitere Informationen

Absicht zum Entfernen | Chromestatus Tracker | Chromium-Fehler