شرح وحدات CSS النسبية: Em و Rem و VH و VW مع أمثلة عملية

دقائق القراءة: 6

مقدمة إلى وحدات CSS النسبية

عند تصميم واجهات ويب مرنة وقابلة للتكيف مع مختلف أحجام الشاشات، يصبح فهم وحدات CSS النسبية أمراً أساسياً. من أبرز هذه الوحدات em وrem وvw وvh، وهي أدوات فعالة تساعدك على بناء مواقع متجاوبة بدون الاعتماد المفرط على القيم الثابتة مثل px.

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

شرح وحدات CSS النسبية مع أمثلة عملية لتصميم واجهات متجاوبة

لماذا يجب تعلم الوحدات النسبية في CSS؟

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

  • تسهل إنشاء تصميم Responsive متناسق.
  • تقلل الحاجة إلى تعديلات كثيرة عند اختلاف أحجام الشاشات.
  • تساعد في تحسين تجربة القراءة وسهولة الاستخدام.
  • تجعل الصيانة والتوسع في المشروع أكثر بساطة.

وعند دمج هذه الوحدات مع media queries، يمكنك الحصول على تخطيط مرن يتدرج بسلاسة بين الهاتف والجهاز اللوحي وسطح المكتب.

مثال على نص متجاوب باستخدام وحدات CSS النسبية عبر أحجام شاشات مختلفة

الفرق بين الوحدات الثابتة والوحدات النسبية

قبل البدء، من المهم فهم الفارق الأساسي بين px والوحدات النسبية. وحدة px لا تتغير تلقائياً عند تغيير حجم النافذة، لذلك قد تبدو مناسبة في بعض الحالات الدقيقة، لكنها ليست الخيار الأفضل دائماً عند بناء واجهات مرنة.

توضيح ثبات حجم النص عند استخدام وحدة البكسل في CSS

نصيحة عملية: من الأفضل التفكير في em وrem على أنهما معاملات ضرب ترتبط بقيمة أساسية، وليس مجرد وحدات قياس تقليدية.

إعداد المشروع للتجربة والتطبيق

إذا أردت تجربة الأمثلة بنفسك، يمكنك إنشاء مشروع بسيط يتكوّن من ملفات HTML وCSS وJavaScript، ثم ربطها ببعضها داخل مجلد واحد مثل project-1. كما يُستحسن استخدام محرر مثل VS Code مع إضافات مفيدة مثل Live Server وأداة تحويل px to rem.

تجهيز ملفات المشروع لتجربة وحدات CSS النسبية عملياً

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

ما هي وحدة rem في CSS؟

وحدة rem تعتمد على حجم خط العنصر الجذري، أي عنصر html. القيمة الافتراضية لحجم الخط في أغلب المتصفحات هي 16px، لذلك فإن:

  • 1rem = 16px
  • 2rem = 32px
  • 3rem = 48px

شرح اعتماد وحدة rem على حجم الخط الأساسي للعنصر html

مثال عملي على 1rem

html {
  font-size: 16px;
}

.text {
  font-size: 1rem;
}

/* 1rem * 16px = 16px */

مثال عملي يوضح أن 1rem يساوي 16 بكسل عند الإعداد الافتراضي

مثال عملي على 2rem

html {
  font-size: 16px;
}

.text {
  font-size: 2rem;
}

/* 2rem * 16px = 32px */

مثال عملي يوضح تكبير حجم النص باستخدام 2rem في CSS

الميزة المهمة هنا أن تغيير قيمة rem يغيّر حجم النص بناءً على قيمة مرجعية ثابتة وواضحة، ما يجعل إدارة المقاسات أسهل بكثير في المشاريع الكبيرة.

كيف يؤثر تغيير حجم الخط الجذري على rem؟

عندما تغيّر حجم الخط في عنصر html، فإن جميع القيم المعتمدة على rem تتغير تلقائياً.

html {
  font-size: 40px;
}

.text {
  font-size: 1rem;
}

/* 1rem * 40px = 40px */

توضيح تأثير تغيير حجم الخط الجذري على وحدة rem في CSS

html {
  font-size: 40px;
}

.text {
  font-size: 2rem;
}

/* 2rem * 40px = 80px */

نتيجة استخدام 2rem بعد تغيير حجم الخط الأساسي إلى 40 بكسل

لهذا السبب تُعد rem من أفضل الوحدات عند بناء نظام تصميم متناسق، لأنها تربط معظم الأحجام بمصدر واحد يمكن التحكم به بسهولة.

كيفية إنشاء تصميم متجاوب باستخدام وحدة rem

الطريقة الشائعة لاستخدام rem في التصميم المتجاوب هي كتابة أحجام العناصر بهذه الوحدة، ثم تغيير حجم الخط الجذري داخل media queries وفقاً لحجم الشاشة.

@media (max-width: 1400px) {
  html {
    font-size: 25px;
  }
}

@media (max-width: 768px) {
  html {
    font-size: 18px;
  }
}

@media (max-width: 450px) {
  html {
    font-size: 12px;
  }
}

ثم يمكن تطبيق الحجم على العنصر بهذه الصورة:

.text {
  font-size: 3rem;
}

مثال على تصميم متجاوب باستخدام وحدة rem مع media queries

الحسابات هنا ستكون كالتالي:

  • الشاشة الكبيرة: 3rem × 25px = 75px
  • الجهاز اللوحي: 3rem × 18px = 54px
  • الهاتف المحمول: 3rem × 12px = 36px
  • الإعداد الافتراضي: 3rem × 16px = 48px

هذا الأسلوب يمنحك تحكماً مركزياً في أبعاد النصوص والعناصر، ويُعد أكثر نظافة من تعديل كل عنصر على حدة.

ما هي وحدة em في CSS؟

وحدة em تشبه rem من حيث الفكرة العامة، لكنها تعتمد على حجم خط العنصر الأب أو السياق الحالي، وليس على العنصر الجذري مباشرة. هذا يجعلها مرنة، لكنها قد تسبب تعقيداً في الحسابات داخل العناصر المتداخلة.

html {
  font-size: 16px;
}

.text {
  font-size: 3em;
}

/* 3em * 16px = 48px */

مثال يوضح حساب حجم الخط باستخدام وحدة em في CSS

مشكلة شائعة عند استخدام em

عند استخدام em في خصائص مثل padding داخل عنصر تم تغيير حجم خطه بالفعل، قد تتضاعف القيم بشكل غير متوقع.

html {
  font-size: 16px;
}

.text {
  font-size: 3em;
  padding: 3em;
}

/*
text => 3em * 16px = 48px
padding => 3em * 48px = 144px
*/

توضيح تضاعف الحشوة padding عند استخدام وحدة em في CSSعرض القيمة المحسوبة لوحدة em في أدوات المطور داخل المتصفح

لهذا السبب، يفضّل كثير من المطورين استخدام rem في المقاسات العامة، لأنه أوضح وأكثر قابلية للتنبؤ، خاصة في المشاريع الكبيرة أو فرق العمل المشتركة.

متى تكون em مناسبة؟

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

ما هي وحدة vw في CSS؟

الاختصار vw يعني viewport width، أي عرض نافذة العرض. كل 1vw يساوي 1% من عرض الشاشة الظاهر للمستخدم.

بالتالي، إذا كتبت 50vw فهذا يعني أن العنصر سيأخذ نصف عرض الشاشة تقريباً.

.text {
  display: none;
}

.box {
  width: 50vw;
  height: 300px;
  /* display: none; */
}

وفي الجزء الخاص بـJavaScript يمكن إظهار قيمة العرض بهذا الشكل:

// Box Width & height
box.innerHTML = "Width : " + Box_width;
// box.innerHTML = "Height : " + Box_height;

مثال يوضح أن 50vw تساوي 50 بالمئة من عرض الشاشةتوضيح تغير عرض العنصر باستخدام وحدة vw عند تغيير حجم النافذة

تُستخدم vw كثيراً في:

  • العناوين الكبيرة المرنة.
  • الأقسام التي يجب أن تتمدد أفقياً مع الشاشة.
  • تصميم العناصر البصرية التي تعتمد على أبعاد الواجهة.

ما هي وحدة vh في CSS؟

الاختصار vh يعني viewport height، أي ارتفاع نافذة العرض. كل 1vh يساوي 1% من ارتفاع الشاشة المرئي.

إذا استخدمت 50vh، فهذا يعني أن العنصر سيشغل نصف ارتفاع الشاشة.

.text {
  display: none;
}

.box {
  width: 300px;
  height: 50vh;
  /* display: none; */
}

ولتحديث عرض القيمة عبر JavaScript:

// Box Width & height
// box.innerHTML = "Width : " + Box_width;
box.innerHTML = "Height : " + Box_height;

وكذلك يمكن عرض ارتفاع الشاشة نفسها:

// Screen Size (Width & height)
// size.innerHTML = "Width : " + Width + " px";
size.innerHTML = "Height : " + Height + " px";

مثال يوضح أن 50vh تساوي 50 بالمئة من ارتفاع الشاشةتوضيح تغير ارتفاع العنصر باستخدام وحدة vh عند تغيير حجم الشاشة

تكون وحدة vh مناسبة بشكل خاص في:

  • أقسام Hero التي تملأ الشاشة.
  • تصميم الشاشات الافتتاحية.
  • توزيع المساحات العمودية بشكل ديناميكي.

مقارنة سريعة بين rem وem وvw وvh

الوحدة تعتمد على أفضل استخدام ملاحظات
rem حجم خط html النصوص والمسافات العامة واضحة وسهلة الإدارة
em حجم خط العنصر الأب العناصر المتداخلة الخاصة قد تسبب تعقيداً في الحسابات
vw عرض نافذة العرض العرض والعناوين المرنة مناسبة للتكيف الأفقي
vh ارتفاع نافذة العرض الأقسام كاملة الارتفاع مفيدة في توزيع المساحات العمودية

أفضل الممارسات عند استخدام الوحدات النسبية

  1. استخدم rem لأحجام الخطوط والهوامش والمسافات الأساسية.
  2. استخدم em بحذر داخل المكونات التي تعتمد على سياق داخلي محدد.
  3. استخدم vw وvh للعناصر المرتبطة مباشرة بأبعاد الشاشة.
  4. ادمج الوحدات النسبية مع media queries لتحقيق أفضل تجاوب.
  5. اختبر التصميم على أكثر من جهاز لتجنب النتائج غير المتوقعة.

الخلاصة التقنية

إذا كنت تبحث عن أفضل نقطة بداية لبناء واجهات متجاوبة وقابلة للصيانة، فإن وحدة rem غالباً هي الخيار الأكثر استقراراً ووضوحاً. أما em فهي مفيدة في حالات خاصة لكنها تتطلب انتباهاً أكبر للحسابات المتداخلة. وبالنسبة إلى vw وvh فهما ممتازتان عندما تريد ربط أبعاد العناصر مباشرة بحجم الشاشة. الاختيار الذكي بين هذه الوحدات لا يحسن التصميم فقط، بل يجعل شيفرتك أكثر احترافية وقابلية للتوسع.

اترك تعليقاً

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