在 Chrome 63 中移除 ::shadow 和 /deep/

從 Chrome 63 版開始,您無法使用陰影選取器 ::shadow/deep/ 設定陰影根層級的內容樣式。

  • /deep/ 合併器可做為子系選取器使用。x-foo /deep/ div 的運作方式與 x-foo div 類似。
  • ::shadow 虛擬元素不會與任何元素相符。

移除的決定

已於 Chrome 45 版淘汰 ::shadow/deep/。所有參與者在 2015 年 4 月網頁元件聚會中做出這項決定。

遮蔽選取器最主要的問題在於違反封裝,並造成元件無法再變更內部實作的情況。

CSS 陰影部分規格已進階,做為陰影穿洞選取器的替代選項。「陰影部分」可讓元件作者以保留封裝的方式顯示已命名元素,同時仍允許頁面作者一次設定多個屬性的樣式。

如果網站使用 ::shadow 和 /deep/?

::shadow/deep/ 選取器只會影響舊版 Shadow DOM v0 元件。如果您使用的是 Shadow DOM 第 1 版,應該不需要變更網站上的任何項目。

您可以使用 Chrome Canary 確認網站不會因這些新的變更而中斷。如果您發現問題,請嘗試移除 ::shadow/deep/ 的所有使用情況。如果移除這些選取器的難度,請考慮從原生 shadow DOM 切換為使用陰影的 DOM Polyfill。只有在網站採用原生 shadow DOM v0 時,才需要進行這項變更。

更多資訊

移除意圖 | Chromestatus Tracker | Chromium 錯誤