0Pricing
CSS Academy · درس

تحديث المتغيرات باستخدام JavaScript

حدّث خصائص CSS المخصّصة ديناميكيًا من JavaScript باستخدام style.setProperty()

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

لماذا نحدّث متغيرات CSS من JavaScript؟

الخصائص المخصصة في CSS حَيّة داخل المتصفح. يؤدي تغييرها عبر JavaScript إلى تحديث جميع العناصر التي تستخدم تلك الخاصية فورًا، ما يتيح السمات الديناميكية، والمنزلقات الفورية، والأنماط المعتمدة على الحالة، دون تبديل عدد كبير من الأصناف.

الحصول على قيمة خاصية مخصصة

اقرأ قيمة خاصية مخصصة باستخدام getComputedStyle():

<div class="demo" style="background:#3b82f6;color:#fff;padding:16px;">Reading --primary-color</div>
<p>Value: <span id="output">(reading...)</span></p>
<script>
  const root = document.documentElement;
  const value = getComputedStyle(root)
    .getPropertyValue('--primary-color').trim();
  console.log(value); // '#3b82f6'
  document.getElementById('output').textContent = value;
</script>

تعيين قيمة خاصية مخصصة

حدّث خاصية مخصصة باستخدام style.setProperty() على أي عنصر:

<div class="card">
  Card body
</div>
<script>
  // Set globally on :root
  document.documentElement.style.setProperty('--primary-color', '#ef4444');

  // Set on a specific element
  document.querySelector('.card').style.setProperty('--card-bg', 'pink');
</script>

إزالة خاصية مخصصة

أزل تجاوز خاصية، وأعدها إلى القيمة المعلنة في CSS، باستخدام style.removeProperty():

<div class="badge">Removing an inline override restores the :root value</div>
<script>
  // Simulate an inline override was set, then removed
  document.documentElement.style.setProperty('--primary-color', 'crimson');
  document.documentElement.style.removeProperty('--primary-color');
  // Now the :root CSS value applies again
</script>

نمط مبدّل السمات

مبدّل سمات تقليدي يبدّل سمة data-theme ويعرّف المتغيرات لكل سمة في CSS:

<div class="panel">Dark theme applied via data-theme</div>
<script>
  document.body.dataset.theme = 'dark';
</script>

شريط تقدم باستخدام متغير CSS

تحكم في قيمة شريط التقدم بالكامل عبر متغير CSS يُعيَّن من JavaScript:

<div class="progress-bar"></div>
<script>
  function setProgress(pct) {
    document.querySelector('.progress-bar')
      .style.setProperty('--progress', pct + '%');
  }
  setProgress(70);
</script>

تتبّع موضع الفأرة

أنشئ تأثيرات اختلاف المنظر أو التأثيرات التي تتبع المؤشر من خلال تحديث متغيرات CSS الموضعية عند تحريك الفأرة:

<div class="cursor-dot"></div>
<script>
  document.addEventListener('mousemove', e => {
    document.documentElement.style.setProperty('--mouse-x', e.clientX + 'px');
    document.documentElement.style.setProperty('--mouse-y', e.clientY + 'px');
  });
</script>

متغيرات مرتبطة بالتمرير

حدّث متغير CSS استنادًا إلى موضع التمرير لإنشاء رسوم متحركة مرتبطة بالتمرير. تتعامل واجهات API الحديثة مع ذلك بصورة أفضل، لكن الجمع بين JavaScript والمتغير يظل أسلوبًا بسيطًا:

<div style="height: 800px; background: linear-gradient(#f8fafc, #cbd5e1);">
  <div class="scroll-fill"></div>
</div>
<script>
  window.addEventListener('scroll', () => {
    const pct = window.scrollY / (document.body.scrollHeight - window.innerHeight);
    document.documentElement.style.setProperty('--scroll', pct);
  });
</script>

تفضيلات المستخدم باستخدام localStorage

احفظ السمة المحددة في localStorage واستعدها عند تحميل الصفحة:

<button class="theme-toggle" onclick="toggleTheme()">Toggle theme</button>
<div class="content">Themed content</div>
<script>
  // Restore
  const saved = localStorage.getItem('theme') || 'light';
  document.documentElement.dataset.theme = saved;

  // Toggle
  function toggleTheme() {
    const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark';
    document.documentElement.dataset.theme = next;
    localStorage.setItem('theme', next);
  }
</script>

الرسوم المتحركة في CSS مقابل JavaScript

للحصول على رسوم متحركة سلسة، فضّل انتقالات CSS التي تستجيب لتغييرات الخصائص المخصصة بدلًا من حلقات JavaScript التي تستخدم requestAnimationFrame. يتولى المتصفح الاستيفاء في خيط التركيب.

الخصائص ذات الأنواع باستخدام @property

يتيح تسجيل متغير باستخدام @property للمتصفحات إجراء الاستيفاء له في الانتقالات، وهو أمر لا يعمل مع الخصائص المخصصة غير المسجلة:

<div class="track">
  <div class="bar"></div>
</div>

تحقق سريع

ما طريقة JavaScript التي تغيّر خاصية CSS مخصصة على العنصر الجذر؟

مراجعة

استخدم style.setProperty() لتحديث الخصائص المخصصة في CSS من JavaScript. تنتشر التغييرات فورًا إلى جميع العناصر التي تستخدمها. يتيح هذا النمط إنشاء سمات ديناميكية، وأشرطة تقدم متحركة، وتأثيرات للمؤشر، ورسوم متحركة مرتبطة بالتمرير، وكل ذلك دون تعديل قوائم الأصناف أو سلاسل الأنماط المضمّنة لخصائص متعددة.

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

هل درس «تحديث المتغيرات باستخدام JavaScript» مجاني؟

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

ماذا ستتعلم في «تحديث المتغيرات باستخدام JavaScript»؟

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

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

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

كم من الوقت يستغرق درس «تحديث المتغيرات باستخدام JavaScript»؟

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

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

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

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

  1. تصريح الخصائص المخصّصة واستخدامها
  2. القيم الاحتياطية وvar()
  3. تحديد نطاق المتغيرات للمكوّنات
  4. تحديث المتغيرات باستخدام JavaScript
← العودة إلى CSS Academy