0Pricing
CSS Academy · درس

التبديل التلقائي واليدوي للوضع الداكن

أنشئ مفتاح تبديل للسمات يحترم تفضيل النظام افتراضيًا، ويتيح للمستخدمين تغييره يدويًا.

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

الهدف

التنفيذ المثالي للوضع الداكن يكتشف تفضيل نظام التشغيل تلقائيًا افتراضيًا، ويوفّر زر تبديل يتيح للمستخدمين تجاوزه بشكل مستقل، مع حفظ التفضيل بين عمليات تحميل الصفحة.

نظرة عامة على البنية

ينبغي التعامل مع ثلاث حالات:

  1. تفضيل النظام: استخدموا prefers-color-scheme مع متغيرات CSS
  2. تجاوز المستخدم: الوضع الداكن: عيّنوا فئة أو سمة بيانات على <html>
  3. تجاوز المستخدم: الوضع الفاتح: عيّنوا فئة مختلفة لمنع الوضع الداكن التلقائي

إعداد رموز CSS المميزة

عرّفوا متغيرات CSS التي تتسلسل بشكل صحيح في جميع الحالات:

<div class="demo" data-theme="dark">Dark token demo</div>
<div class="demo" data-theme="light">Light token demo</div>

منطق التبديل في JavaScript

اقرؤوا التفضيل المحفوظ، وطبّقوه، وحدّثوه عند التبديل:

<div class="demo" id="theme-demo">Toggle my theme</div>
<div class="demo" data-theme="dark">Dark override example</div>
<button id="toggle-btn">Toggle Theme</button>
<script>
  function toggleTheme() {
    const current = document.getElementById('theme-demo').dataset.theme;
    const system = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
    if (!current) {
      const next = system === 'dark' ? 'light' : 'dark';
      document.getElementById('theme-demo').dataset.theme = next;
    } else {
      delete document.getElementById('theme-demo').dataset.theme;
    }
  }
  document.getElementById('toggle-btn').addEventListener('click', toggleTheme);
</script>

مفتاح تبديل ثلاثي الحالات

مفتاح تبديل ثلاثي الحالات أكثر دقة: الفاتح | النظام | الداكن:

<div class="demo" id="theme-demo">Cycles: light → system → dark</div>
<div class="demo" data-theme="dark">Dark state example</div>
<p id="state-label">system</p>
<button id="cycle-btn">Cycle Theme</button>
<script>
  const states = ['light', 'system', 'dark'];
  let current = 'system';
  const demo = document.getElementById('theme-demo');
  const label = document.getElementById('state-label');
  document.getElementById('cycle-btn').addEventListener('click', () => {
    current = states[(states.indexOf(current) + 1) % states.length];
    label.textContent = current;
    if (current === 'system') { delete demo.dataset.theme; } else { demo.dataset.theme = current; }
  });
</script>

منع وميض السمة الخاطئة

طبّقوا السمة المحفوظة بشكل متزامن قبل عرض الصفحة:

<pre class="code-sample">&lt;!-- In &lt;head&gt;, before any styles --&gt;
&lt;script&gt;
  const t = localStorage.getItem("theme");
  if (t) document.documentElement.dataset.theme = t;
&lt;/script&gt;</pre>

إمكانية الوصول إلى زر التبديل

ينبغي أن يبلّغ زر التبديل قارئات الشاشة بالحالة الحالية. حدّثوا التسمية الميسّرة عند التبديل:

<button id="theme-toggle" aria-label="Switch to dark mode">🌙</button>

انتقال متحرك للسمة

انتقالات لونية سلسة عند تغيير السمة:

<div class="demo" id="at-demo">Smooth theme transition</div>
<button onclick="document.documentElement.classList.add('theme-transitioning'); const d=document.getElementById('at-demo'); const dark = d.style.background==='rgb(17, 17, 17)'; d.style.background = dark ? '#fff' : '#111'; d.style.color = dark ? '#111' : '#fff'; setTimeout(()=>document.documentElement.classList.remove('theme-transitioning'),250);">Toggle</button>

الاستماع إلى تغييرات النظام

استجيبوا أيضًا إذا غيّر المستخدم تفضيل نظام التشغيل أثناء بقاء الصفحة مفتوحة:

<p id="status">Listening for system theme changes…</p>
<script>
  window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {
    document.getElementById('status').textContent = 'System changed to ' + (e.matches ? 'dark' : 'light');
  });
</script>

أيقونات الوضع الداكن

بدّلوا الأيقونات لكل وضع. استخدموا عنصر picture للصور المتوافقة مع السمة، أو استخدموا CSS لإظهار أيقونات مختلفة وإخفائها:

<div>Light: <span class="icon-sun">☀️</span><span class="icon-moon">🌙</span></div>
<div data-theme="dark">Dark: <span class="icon-sun">☀️</span><span class="icon-moon">🌙</span></div>

ملخّص: قائمة التحقّق من التنفيذ

قائمة التحقّق من الوضع الداكن:

  • متغيرات CSS لجميع رموز الألوان المميزة
  • استعلام وسائط prefers-color-scheme للاكتشاف التلقائي
  • سمة data-theme للتجاوز اليدوي
  • localStorage لحفظ التفضيل
  • شيفرة مضمّنة في head لمنع الوميض
  • زر تبديل ميسّر مع aria-label ديناميكية

تحقّق سريع

ما التقنية التي تمنع حدوث «وميض السمة الخاطئة» عند تحميل الصفحة؟

مراجعة

يستخدم مفتاح التبديل الكامل للوضع الداكن متغيرات CSS لرموز السمة المميزة، واستعلام prefers-color-scheme للاكتشاف التلقائي، وسمة data-theme للتجاوز اليدوي، وlocalStorage لحفظ التفضيل، وشيفرة متزامنة في head لمنع الوميض. وفّروا مفتاح تبديل ميسّرًا بثلاث حالات (الفاتح/النظام/الداكن) للحصول على أفضل تجربة للمستخدم.

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

هل درس «التبديل التلقائي واليدوي للوضع الداكن» مجاني؟

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

ماذا ستتعلم في «التبديل التلقائي واليدوي للوضع الداكن»؟

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

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

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

كم من الوقت يستغرق درس «التبديل التلقائي واليدوي للوضع الداكن»؟

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

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

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

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

  1. استعلام الوسائط prefers-color-scheme
  2. متغيرات CSS لتنسيق السمات
  3. خاصية color-scheme
  4. التبديل التلقائي واليدوي للوضع الداكن
← العودة إلى CSS Academy