x

العمل مع الوحدات النسبية والمطلقة Absolute and Relative Units

ما هي وحدات em و rem في CSS، ومتى يجب استخدامها؟

نظري

في الدرس السابق، تعلّمنا عن وحدات الطول المطلقة (absolute length units) مثل البكسل (pixels). رغم أن الوحدات المطلقة (absolute units) قد تكون مفيدة في بعض الحالات، إلا أنه ستكون هناك أوقات تريد فيها استخدام وحدات نسبية (relative units).

في هذا الدرس، سنتعلم عن وحدتين نسبيتين (two relative units) : هما ems و rems.

كيف تعمل وحدات em ؟

وحدات em تعتمد على حجم الخط للعنصر. إذا كنت تستخدم ems لخاصية font-size، سيكون حجم النص نسبيًا (relative) لحجم الخط في العنصر الأب (parent element).

لفهم كيفية عمل ذلك بشكل أفضل، دعنا نلقي نظرة على مثال:

index.html


<link rel="stylesheet" href="styles.css">

<p class="para">أنا عنصر فقرة</p>

<div class="blue-box"></div>
            

styles.css


.para {
 font-size: 20px;
 margin-bottom: 1.5em;
 border: 2px solid red;
}

.blue-box {
 background-color: blue;
 color: white;
 padding: 10px;
 width: 100px;
 height: 100px;
}
            

معاينة:

في HTML، لدينا فقرة وعنصر div. عنصر الفقرة يحمل فئة para، وعنصر الـ div يحمل فئة blue-box.

بالنسبة لفئة para عرّفنا font-size إلى 20px و bottom إلى 1.5em. هذا يعني أن الهامش سيكون 1.5 ضعف حجم الخط لعنصر الفقرة. قيمة 1.5em تعادل 30 بكسل من الهامش في أسفل الفقرة. كما عرّفنا border بقيمة 2px solid red لتتمكن من رؤية الهوامش بشكل أوضح.

لصنف blue-box، عيّنا لون الخلفية إلى blue، ولون النص إلى white، و padding إلى 10px على جميع الجوانب الأربعة.

ن المثال، سيكون هناك مساحة واضحة بين أسفل عنصر الفقرة والصندوق الأزرق.

فماذا يحدث إذا أزلنا خاصية font-size من صنف para ؟

سيكون الهامش السفلي (bottom margin) نسبيًا relative لحجم الخط في العنصر الأب (parent element). في هذه الحالة، العنصر الأب هو عنصر body، الذي له حجم خط افتراضي 16px.

متى يجب استخدام وحدات em ؟

تُعد وحدات القياس em خياراً جيداً عند العمل على عناصر معيارية (modular components)، مثل الأزرار أو البطاقات. فمن خلال استخدام هذه الوحدات em ، يمكنك ضمان أن تتناسب جميع أجزاء العنصر (كالهوامش الداخلية والخارجية والحدود) طردياً مع حجم الخط، مما يحافظ على تناسق الأبعاد.

حتى هذه النقطة، كنا نعيّن حجم الخط لعنصر باستخدام البكسل. لكن هذا يسبب بعض التحديات للمستخدمين.

داخل إعدادات المتصفح (browser settings)، يمكنك التحكم في حجم الخط الافتراضي.

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

لماذا نستخدم وحدات rem في تنسيق النصوص Typography ؟

تتمثل إحدى طرق معالجة هذه المسألة في استخدام وحدات rem لتنسيق النصوص (typography). وتعتمد وحدة rem على حجم الخط الخاص بالعنصر الجذري (root element)، وهو عنصر html.

افتراضيًا، حجم الخط في عنصر html هو 16px. إذا زاد المستخدم حجم الخط في إعدادات المتصفح، سيزداد حجم الخط في عنصر html، وستتغير جميع وحدات rem نسبيًا.

إليك مثالًا على استخدام وحدة rem لحجم الخط بدلًا من البكسل:

index.html


<link rel="stylesheet" href="styles.css">

<p>هذا نص عادي.</p>
<p class="para">هذا النص أكبر قليلاً.</p>
            

styles.css


.para {
 font-size: 1.2rem;
 margin-bottom: 1.5em;
 border: 2px solid red;
}
            

معاينة:

بتعيين حجم الخط إلى 1.2rem، سيكون حجم الخط لعنصر الفقرة 1.2 ضعف حجم الخط في العنصر الجذري (root element). إذا لم يغير المستخدم حجم الخط الافتراضي، سيكون حجم الخط لعنصر الفقرة 19.2px لأنه 1.2 ضعف 16px.

متى يجب استخدام وحدات rem ؟

إذًا، متى ينبغي عليك استخدام وحدات rem ؟ تُفضَّل وحدات rem على وحدات البكسل (pixels) في تنسيق النصوص (typography)؛ لأنها تتناسب في الحجم طرديًا مع إعدادات متصفح المستخدم، مما يجعل المحتوى أكثر سهولة في الوصول إليه بالنسبة للمستخدمين الذين يعانون من ضعف في البصر.

يمكن لوحدات rem أيضًا المساعدة في الحفاظ على تباعد وتخطيط متناسق عبر العناصر المختلفة.

أسئلة :

إلى ماذا تُنسب وحدة em ؟

1. حجم الخط font-size لعنصر الشكل figure. ❌

2. حجم الخط font-size للعنصر أو للعنصر الأب (parent element). ✅

3. حجم الخط font-size للعنصر الجذري (root element). ❌

4. حجم الخط font-size لعنصر الصورة img. ❌


لماذا يُفضَّل استخدام وحدات rem بدلاً من البكسل (pixels) في التعامل مع النصوص (typography)؟

1. يجب دائمًا استخدام البكسل للطباعة. ❌

2. تجعل تصاميمك أكثر ألوانًا. ❌

3. تتغير نسبيًا مع إعدادات المتصفح لدى المستخدم. ✅

4. فهي تساهم في تحسين أداء الموقع الإلكتروني. ❌


إلى ماذا تُنسب وحدات rem ؟

1. حجم الخط font-size لعنصر figure. ❌

2. حجم الخط font-size للعنصر نفسه أو للعنصر الأب (parent element). ❌

3. حجم الخط font-size لعنصر img. ❌

4. حجم الخط font-size للعنصر الجذري (root element). ✅