HTML Academy · درس

الأنماط محددة النطاق داخل Shadow DOM

كتابة CSS لا يؤثر إلا في العناصر الموجودة داخل شجرة الظل

الدرس 3 من 413 خطوة

الأنماط محددة النطاق داخل Shadow DOM درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.

عزل CSS افتراضيًا

تنطبق كل قاعدة <style> داخل جذر الظل على ذلك الجذر وحده. تلوّن p { color: red } داخل شجرة ظل فقرات تلك الشجرة فقط — فلا تتأثر الفقرات في المستند الرئيسي، كما لا تصل أنماط المستند الرئيسي إلى داخل الظل.

أهمية العزلية

تتخلص العزلية من مشكلة CSS العامة التي أرهقت التطبيقات الكبيرة لعقود. فلا يمكن لأنماط الموقع أن تتجاوز أنماط المكوّن عرضيًا، ولا يمكن للمكوّن أن يعطّل الموقع عرضيًا. الحدّ الفاصل تحدده المواصفة، وليس مجرد اتفاقية.

الفئة الزائفة :host

من داخل شجرة الظل، نسّق عنصر المضيف باستخدام :host. استخدم :host(selector) لتقييد النطاق وفق محدّد: تطابق :host([open]) { display: block; } المضيف فقط عند وجود سمة open.

ما زالت الخصائص الموروثة تعبر الحدّ الفاصل

ما زالت خصائص CSS الموروثة، مثل color وfont-family وline-height، تعبر حدّ الظل عن طريق الوراثة. يؤدي ضبط المستند للقاعدة body { color: blue } إلى جعل نص الظل أزرق أيضًا، ما لم تتجاوزها شجرة الظل صراحةً. وهذه ميزة تضمن بقاء الإعدادات الافتراضية للطباعة متسقة.

تخترق خصائص CSS المخصّصة الحدّ الفاصل

ترث الجذور الظلية الخصائص المخصّصة، أو متغيرات CSS، مما يجعلها الطريقة المعتمدة لكشف واجهة API الخاصة بتخصيص مظهر المكوّن: أعلن عن --card-bg: var(--surface, white) داخل شجرة الظل، ودَع المستهلكين يتجاوزون --surface على المضيف.

/* Shadow */
:host {
  background: var(--card-bg, white);
}
/* Page */
my-card {
  --card-bg: #f3f4f6;
}

استخدام ::part للتنسيق الخارجي

ضع علامة part="name" على عنصر داخلي في شجرة الظل، ليتمكن المستهلكون من تنسيقه باستخدام my-card::part(name) { ... }. استخدم الأجزاء كنقاط ربط لتنسيق عناصر محددة، مع إبقاء معظم شجرة الظل معزولة.

أوراق الأنماط المعتمدة

تشارك shadowRoot.adoptedStyleSheets = [sheet] ورقة CSSStyleSheet واحدة بين العديد من جذور الظل، مما يتجنب تحليل عناصر <style> المتكررة. أنشئ الأوراق باستخدام new CSSStyleSheet() وsheet.replaceSync(cssText). يحقق ذلك مكسبًا كبيرًا في الأداء ضمن أنظمة التصميم.

ترتيب التصريحات

ضع علامات <style> في أعلى موضع ممكن من innerHTML الخاص بالظل، حتى تُحلّل الأنماط قبل إنشاء بقية DOM. يؤدي ذلك إلى تجنّب الظهور الخاطف للمحتوى غير المنسّق الذي يحدث عندما تصل الأنماط متأخرة في ترتيب التحليل.

:host-context للقواعد المعتمدة على الأسلاف

تنسّق :host-context(.dark-mode) :host المضيف استنادًا إلى محدّد لعنصر سلف خارج شجرة الظل. يفيد ذلك في تطبيق مظهر على المكوّنات بناءً على فئة موجودة في غلاف عالي المستوى. دعم المتصفحات جيد، لكن تحقّق منه ضمن مجموعة المتصفحات المستهدفة لديك.

يبقى الضبط العام خارج شجرة الظل

لا تؤثر عمليات ضبط CSS على مستوى المستند، مثل الهوامش على body وbox-sizing، في أشجار الظل. أعد تطبيق عمليات الضبط المطلوبة داخل كل جذر ظل، أو شاركها عبر ورقة أنماط منشأة واعتمدها في كل مكوّن.

تصحيح أخطاء أنماط الظل

يعرض Chrome DevTools جذور الظل في لوحة Elements تحت "#shadow-root (open)". يمكنك فحص أنماط الظل وتعديلها وتفعيلها أو تعطيلها مثل أي CSS أخرى، بما في ذلك الفئة الزائفة :host وقواعد ::part.

اختبار الفهم

لماذا تُعد خصائص CSS المخصّصة، أو المتغيرات، الطريقة المفضّلة لتطبيق مظهر على مكوّن Shadow DOM؟

الخلاصة

يعزل Shadow DOM الأنماط في الاتجاهين. نسّق المضيف باستخدام :host، واكشف نقاط ربط المظهر عبر خصائص CSS المخصّصة الموروثة، واكشف عناصر محددة للتنسيق باستخدام ::part، وشارك أوراق الأنماط باستخدام adoptedStyleSheets، وأعد تطبيق عمليات الضبط داخل كل جذر ظل لأن CSS على مستوى المستند لا يعبر الحدّ الفاصل.

البدء مجانًا

تعلم HTML مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
40
الدروس
159

الأسئلة الشائعة

هل درس «الأنماط محددة النطاق داخل Shadow DOM» مجاني؟

نعم — نص درس «الأنماط محددة النطاق داخل Shadow DOM» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأنماط محددة النطاق داخل Shadow DOM»؟

كتابة CSS لا يؤثر إلا في العناصر الموجودة داخل شجرة الظل تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟

لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «الأنماط محددة النطاق داخل Shadow DOM»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟

نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. attachShadow وShadow Root
  2. عناصر Slot لتوزيع المحتوى
  3. الأنماط محددة النطاق داخل Shadow DOM
  4. Part وExportparts للتنسيق الخارجي
← العودة إلى HTML Academy