CSSCSS متقدم Advancedالموسوعة

67- متغيرات CSS – دالة var()

متغيرات CSS
تُستخدم دالة var() لإدراج قيمة متغير CSS.

تحصل المتغيرات CSS على وصول إلى DOM، مما يعني أنه يمكنك إنشاء متغيرات ذات نطاق محلي أو عالمي، وتغيير المتغيرات باستخدام JavaScript، وتغيير المتغيرات استنادًا إلى استعلامات الوسائط.

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

الطريقة التقليدية


يوضح المثال التالي الطريقة التقليدية لتعريف بعض الألوان في ورقة الأنماط (عن طريق تعريف الألوان المستخدمة لكل عنصر محدد):

مثال

body { background-color: #1e90ff; }

h2 { border-bottom: 2px solid #1e90ff; }

.container {
  color: #1e90ff;
  background-color: #ffffff;
  padding: 15px;
}

button {
  background-color: #ffffff;
  color: #1e90ff;
  border: 1px solid #1e90ff;
  padding: 5px;
}

صيغة دالة var()
تُستخدم دالة var() لإدراج قيمة متغير CSS.

صيغة دالة var() كما يلي:

var(–name, value)

القيمةالوصف
nameمطلوب. اسم المتغير (يجب أن يبدأ بشرطتين)
valueاختياري. قيمة الإحتياط (استخدم في حال عدم العثور على المتغير)


ملاحظة: يجب أن يبدأ اسم المتغير بشرطتين (–) وهو حساس لحالة الأحرف!


كيفية عمل var()


أولاً وقبل كل شيء: يمكن أن تكون للمتغيرات CSS نطاق عالمي أو محلي.

يمكن الوصول إلى المتغيرات العالمية واستخدامها في الوثيقة بأكملها، بينما يمكن استخدام المتغيرات المحلية فقط داخل المحدد الذي يتم فيه تعريفه.

لإنشاء متغير ذو نطاق عالمي، قم بتعريفه داخل محدد :root. يتطابق محدد :root مع عنصر الجذر في الوثيقة.

لإنشاء متغير ذو نطاق محلي، قم بتعريفه داخل المحدد الذي سيستخدمه.

المثال التالي يعادل المثال السابق، ولكننا نستخدم هنا دالة var().

أولاً، نقوم بتعريف متغيرين عالميين (–blue و –white). ثم، نستخدم دالة var() لإدراج قيمة المتغيرات في ورقة الأنماط لاحقًا:

مثال

:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body { background-color: var(--blue); }

h2 { border-bottom: 2px solid var(--blue); }

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}

مزايا استخدام دالة var() هي:

تجعل الكود أسهل قراءة (أكثر فهمًا)
تجعل من السهل جدًا تغيير قيم الألوان
لتغيير اللون الأزرق والأبيض إلى لون أزرق وأبيض أكثر نعومة، ما عليك سوى تغيير قيم المتغيرين:

مثال

:root {
  --blue: #6495ed;
  --white: #faf0e6;
}

body { background-color: var(--blue); }

h2 { border-bottom: 2px solid var(--blue); }

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}

تجاوز المتغيرات

تجاوز المتغير العالمي باستخدام متغير محلي

من السابق تعلمنا أن المتغيرات العالمية يمكن الوصول إليها/استخدامها عبر المستند بأكمله، بينما لا يمكن استخدام المتغيرات المحلية إلا داخل المُحدد الذي تم تعريفها فيه.

إطلع على المثال من السابق:

:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body {
  background-color: var(--blue);
}

h2 {
  border-bottom: 2px solid var(--blue);
}

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}

في بعض الأحيان نريد أن تتغير المتغيرات فقط في قسم معين من الصفحة. لنفترض أننا نريد لونًا مختلفًا للأزرق لعناصر الأزرار. بعد ذلك، يمكننا إعادة تعريف المتغير --blue داخل مُحدد الزر. عندما نستخدم var(--blue) داخل هذا المُحدد، فإنه سيستخدم قيمة المتغير المحلي --blue المعلنة هنا.

نرى أن المتغير المحلي --blue سيتجاوز المتغير العالمي --blue لعناصر الأزرار:

:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body {
  background-color: var(--blue);
}

h2 {
  border-bottom: 2px solid var(--blue);
}

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  --blue: #0000ff; /* local variable will override global */
  background-color: var(--white);
  color: var(--blue);
  border: 1px solid var(--blue);
  padding: 5px;
}

إضافة متغير محلي جديد

إذا كان من المفترض استخدام متغير في مكان واحد فقط، فيمكننا أيضًا تعريف متغير محلي جديد، مثل هذا:

:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

body {
  background-color: var(--blue);
}

h2 {
  border-bottom: 2px solid var(--blue);
}

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
}

button {
  --button-blue: #0000ff; /* new local variable */
  background-color: var(--white);
  color: var(--button-blue);
  border: 1px solid var(--button-blue);
  padding: 5px;
}

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

تتصل متغيرات CSS بمستند HTML (DOM)، مما يعني أنه يمكنك تغييرها باستخدام JavaScript.

فيما يلي مثال على كيفية إنشاء نص برمجي لعرض وتغيير المتغير --blue من المثال المستخدم في الصفحات السابقة. لا تقلق حاليًا إذا لم تكن معتادًا على JavaScript.

<script>
// Get the root element
var r = document.querySelector(':root');

// Create a function for getting a variable value
function myFunction_get() {
  // Get the styles (properties and values) for the root
  var rs = getComputedStyle(r);
  // Alert the value of the --blue variable
  alert("The value of --blue is: " + rs.getPropertyValue('--blue'));
}

// Create a function for setting a variable value
function myFunction_set() {
  // Set the value of variable --blue to another value (in this case "lightblue")
  r.style.setProperty('--blue', 'lightblue');
}
</script>

استخدام المتغيرات في استعلامات الوسائط

الآن نريد تغيير قيمة متغير داخل استعلام وسائط (Media Query).

نصيحة: استعلامات الوسائط هي حول تحديد قواعد أنماط مختلفة لأجهزة مختلفة (شاشات وأجهزة لوحية وهواتف محمولة وما إلى ذلك). يمكنك معرفة المزيد حول استعلامات الوسائط في فصل استعلامات الوسائط الخاص بنا.

هنا، نقوم أولاً بتعريف متغير محلي جديد باسم --fontsize لصنف .container. نضبط قيمته على 25 بكسل. ثم نستخدمه في صنف .container لاحقًا. بعد ذلك، ننشئ قاعدة @media تقول “عندما يكون عرض المتصفح 450 بكسل أو أكبر، قم بتغيير قيمة المتغير --fontsize لصنف .container إلى 50 بكسل.”

فيما يلي المثال الكامل:

/* Variable declarations */
:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

.container {
  --fontsize: 25px;
}

/* Styles */
body {
  background-color: var(--blue);
}

h2 {
  border-bottom: 2px solid var(--blue);
}

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
  font-size: var(--fontsize);
}

@media screen and (min-width: 450px) {
  .container {
    --fontsize: 50px;
  }
}

ها هو مثال آخر حيث نقوم أيضًا بتغيير قيمة المتغير --blue داخل قاعدة @media:

/* Variable declarations */
:root {
  --blue: #1e90ff;
  --white: #ffffff;
}

.container {
  --fontsize: 25px;
}

/* Styles */
body {
  background-color: var(--blue);
}

h2 {
  border-bottom: 2px solid var(--blue);
}

.container {
  color: var(--blue);
  background-color: var(--white);
  padding: 15px;
  font-size: var(--fontsize);
}

@media screen and (min-width: 450px) {
  .container {
    --fontsize: 50px;
  }
   :root {
    --blue: lightblue;
  }
}

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شاهد أيضاً
إغلاق
زر الذهاب إلى الأعلى