حذف ::shadow و /deep/ در Chrome 63

با شروع در Chrome 63، نمی‌توانید از انتخابگرهای سوراخ‌کننده سایه ::shadow و /deep/ برای استایل دادن به محتوای داخل یک ریشه سایه استفاده کنید.

  • ترکیب کننده /deep/ به عنوان یک انتخاب کننده نزول عمل می کند. x-foo /deep/ div مانند x-foo div کار خواهد کرد.
  • شبه عنصر ::shadow با هیچ عنصری مطابقت نخواهد داشت.

تصمیم برای حذف

::shadow و /deep/ در نسخه 45 کروم منسوخ شد. همه شرکت‌کنندگان در جلسه آوریل 2015 Web Components تصمیم گرفتند.

نگرانی اولیه با انتخابگرهای سایه سوراخ این است که آنها کپسولاسیون را نقض می کنند و موقعیت هایی را ایجاد می کنند که یک جزء دیگر نمی تواند اجرای داخلی خود را تغییر دهد.

مشخصات CSS Shadow Parts به عنوان جایگزینی برای انتخابگرهای سوراخ کردن سایه در حال پیشرفت است. Shadow Parts به نویسنده کامپوننت اجازه می دهد تا عناصر نامگذاری شده را به گونه ای در معرض دید قرار دهد که کپسوله سازی را حفظ کند و همچنان به نویسندگان صفحه امکان استایل دادن به چندین ویژگی را به طور همزمان بدهد.

اگر سایت من از ::shadow و /deep/ استفاده می کند چه کاری باید انجام دهم؟

انتخابگرهای ::shadow و /deep/ فقط بر مؤلفه‌های قدیمی Shadow DOM v0 تأثیر می‌گذارند. اگر از Shadow DOM v1 استفاده می کنید، نباید چیزی را در سایت خود تغییر دهید.

می توانید از Chrome Canary برای تأیید اینکه سایت شما با این تغییرات جدید شکسته نمی شود استفاده کنید. اگر متوجه مشکل شدید، سعی کنید استفاده از ::shadow و /deep/ را حذف کنید. اگر حذف استفاده از این انتخابگرها بسیار دشوار است، تغییر از DOM سایه طبیعی به DOM polyfill سایه دار را در نظر بگیرید. فقط در صورتی باید این تغییر را انجام دهید که سایت شما به سایه Native DOM v0 متکی باشد.

اطلاعات بیشتر

قصد حذف | ردیاب Chromestatus | اشکال کروم