متغيرات CSS

المتغيرات CSS (الخصائص المخصصة) تتيح لك تعريف قيم قابلة لإعادة استخدام في CSS، مشابهة للمتغيرات في لغات البرمجة. استخدام متغيرات CSS يمكن أن يُقلل بشكل كبير من الكود المتكرر ويجعل من السهل إدارة رموز التصميم مثل ألوان المواضيع والمسافات.

تعريف المتغيرات

متغيرات CSS تستخدم أسماء خصائص مخصصة (تبدأ بـ--):

مثال

HTML
<style>
/* تعريف متغيرات عامة في :root */
:root {
  --primary-color: #3498db;
  --secondary-color: #2ecc71;
  --text-color: #333;
  --border-radius: 8px;
  --spacing: 16px;
  --font-size: 16px;
}
</style>
▶ جرّب الكود

استخدام المتغيرات

استشهد بالمتغيرات باستخدام دالة var():

مثال

HTML
<style>
.button {
  background-color: var(--primary-color);
  color: white;
  border-radius: var(--border-radius);
  padding: var(--spacing);
  font-size: var(--font-size);
}

.card {
  border: 1px solid var(--primary-color);
  border-radius: var(--border-radius);
  padding: var(--spacing);
}
</style>
<button class="button">زر</button>
<div class="card">بطاقة</div>
▶ جرّب الكود

نطاق المتغيرات

نطاق متغيرات CSS يُحدد بمكان تعريفها:

متغيرات عامة — مُعرفة في :root:

مثال

HTML
<style>
:root {
  --color: blue;
}
</style>
<div class="box-demo">صندوق عرض يوضح تأثير الخاصية الحالية</div>
▶ جرّب الكود

متغيرات محلية — مُعرفة في مُحدد محدد، ت生效 فقط في ذلك المُحدد وأبنائه:

مثال

HTML
<style>
.card {
  --card-bg: #f5f5f5;
  --card-padding: 20px;
}

.card-header {
  background: var(--card-bg);
  padding: var(--card-padding);
}
</style>
<div class="card">بطاقة</div>
<div class="card-header">ترويسة البطاقة</div>
▶ جرّب الكود

توريث المتغيرات

متغيرات CSS تتوارث مثل خصائص CSS العادية:

مثال

HTML
<style>
:root {
  --theme-color: #333;
}

/* تجاوز المتغير في حاوية */
.dark-theme {
  --theme-color: #eee;
}

.dark-theme .content {
  color: var(--theme-color);  /* #eee */
}

.content {
  color: var(--theme-color);  /* #333 */
}
</style>
<div class="dark-theme">معاينة الوضع الداكن</div>
<div class="content">منطقة المحتوى الرئيسية</div>
▶ جرّب الكود

قيم احتياطية لـ var()

var() يمكنها تعيين معلمة ثانية كقيمة احتياطية — تُستخدم عندما يكون المتغير غير مُعرَّف:

مثال

HTML
<style>
.element {
  color: var(--undefined-color, red);  /* يستخدم الأحمر لأن --undefined-color غير مُعرَّف */
  background: var(--bg, var(--fallback, #eee));  /* يمكن تداخل القيم الاحتياطية */
}
</style>
<div class="element">هذا عنصر مثال</div>
▶ جرّب الكود

تعديل المتغيرات بـ JavaScript

✅ تنفيذ تبديل السمة: متغيرات CSS مع JavaScript هي أفضل حل لتنفيذ "الوضع الداكن" — قم بتبديل سمة data-theme على <html>، واستخدم المتغيرات في CSS للإشارة إلى ألوان مختلفة، وسطر واحد من كود JS يمكنه تبديل مخطط ألوان الموقع بأكمله.

ميزة رئيسية لمتغيرات CSS هي أنه يمكن تعديلها ديناميكياً عبر JavaScript:

مثال

JAVASCRIPT
// الحصول
const color = getComputedStyle(document.documentElement)
  .getPropertyValue('--primary-color');

// تعيين
document.documentElement.style.setProperty('--primary-color', '#e74c3c');
▶ جرّب الكود

تنفيذ تبديل السمة

متغيرات CSS هي أفضل طريقة لتنفيذ تبديل السمة مثل "الوضع الداكن":

مثال

HTML
<style>
/* سمة فاتحة (افتراضي) */
:root {
  --bg-color: #ffffff;
  --text-color: #333333;
  --card-bg: #f5f5f5;
  --border-color: #dddddd;
}

/* سمة داكنة */
[data-theme="dark"] {
  --bg-color: #1a1a2e;
  --text-color: #eeeeee;
  --card-bg: #16213e;
  --border-color: #0f3460;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
}
</style>
▶ جرّب الكود

ثم قم بتبديل السمات عبر JavaScript:

JAVASCRIPT
document.documentElement.setAttribute('data-theme', 'dark');
// أو
document.documentElement.setAttribute('data-theme', 'light');

مزايا متغيرات CSS

  1. تقليل الكود المتكرر: متغير واحد يُستخدم في أماكن كثيرة، غيّره مرة واحدة لتحديث الكل
  2. قابل للتعديل في وقت التشغيل: يمكن تغييره ديناميكياً عبر JS لتبديل السمة
  3. التحكم في النطاق: يمكن تجاوز قيم المتغيرات في حاويات محددة
  4. دلالي: --primary-color أسهل في الفهم من #3498db

الاختلافات عن المعالجات المسبقة

متغيرات CSS (الخصائص المخصصة) تختلف عن متغيرات Sass/Less:

الميزة متغيرات CSS متغيرات Sass
التعديل في وقت التشغيل ✅ نعم ❌ ثابت بعد التجميع
النطاق ✅ توريث CSS ❌ قيم ثابتة بعد التجميع
المتصفح دعم المتصفحات الحديثة لا حاجة لدعم المتصفح (مُجمع مسبقاً)
تفاعل JS ✅ قابل للقراءة/الكتابة ❌ غير قابل للوصول

❓ أسئلة شائعة

س ما الفرق بين متغيرات CSS ومتغيرات Sass؟
ج متغيرات CSS هي خصائص CSS حقيقية يمكن تعديلها ديناميكياً في المتصفح وتدعم قراءة/كتابة JavaScript. متغيرات Sass تصبح قيماً ثابتة بعد التجميع ولا يمكن تعديلها في وقت التشغيل. متغيرات CSS يمكنها تبديل السمة؛ متغيرات Sass لا تستطيع. لا تتعارض ويمكن استخدامها معاً.
س ما هي قواعد النطاق لـ CSS variables؟
ج متغيرات CSS تتبع قواعد التتالي. المتغيرات المُعرفة في `:root` متوفرة عالمياً؛ المتغيرات المُعرفة على عنصر تعمل فقط في ذلك العنصر وأبنائه. هذه الخاصية تتيح التجاوز المحلي للسمة — أعطِ حاوية قيم متغيرات مختلفة، وجميع المراجع لتلك المتغيرات بالداخل تتغير تلقائياً.
س هل يمكن لمتغيرات CSS تنفيذ الوضع الداكن؟
ج نعم، هذا هو حال الاستخدام الأكثر كلاسيكية لمتغيرات CSS. حدد متغيرات ألوان فاتحة في `:root`، وتجاوزها بقيم داكنة في `[data-theme="dark"]`، ثم سطر واحد من JavaScript `document.documentElement.dataset.theme = "dark"` يمكنه تبديل مخطط ألوان الموقع بأكمله.

📖 ملخص

📝 تمارين

  1. أنشئ صفحة باستخدام متغيرات CSS لتعريف 5 متغيرات على الأقل لألوان المواضيع وألوان النص والمسافات وغيرها، واستخدمها في جميع أنحاء الصفحة.
  2. بناءً على الصفحة أعلاه، نفّذ "تبديل لون السمة بنقرة واحدة" — عدّل متغير اللون الأساسي في :root وراقب التغييرات في جميع العناصر ذات الصلة.
  3. استخدم متغيرات CSS لتنفيذ تبديل بسيط بين "الوضع النهاري/الليلي" (بتبديل الفئة أو سمة data-theme عبر JS).
  4. تجاوز محلياً قيم متغيرات CSS في حاوية (مثل مكوّن البطاقة) وراقب تغييرات النمط في العناصر الابنة.
100%