محول PX ↔ REM ↔ EM ↔ PT
حوّل وحدات CSS في الاتجاهين بحجم جذر قابل للتخصيص — تتحدث px وrem وem وpt معًا.
829 مشاهدة
كيف يعمل التحويل
rem = px ÷ حجم الجذر (16px افتراضيًا، أي أن 24px = 1.5rem)؛ تعمل em بالطريقة نفسها لكن بالنسبة إلى حجم الخط الموروث الخاص بالعنصر نفسه — حقل "حجم السياق" في المحول؛ أما pt فهي وحدة الطباعة، حيث 1pt = 1.333px (96dpi ÷ 72). اكتب في أي حقل وستتحدّث بقية الحقول تلقائيًا.
مثال محسوب: على أساس جذر 16px، يُعرض عنوان بحجم 1.25rem عند 20px. ضع تسمية بحجم 0.875em داخل مكوّن حجم خطه الخاص 1.125rem (18px)، فتُعرض عند 15.75px — لأن em تتراكم بالنسبة إلى الأب المباشر، لا بالنسبة إلى الجذر.
ما ينبغي معرفته
- rem نسبية إلى العنصر الجذر، لا إلى قيمة افتراضية ثابتة للمتصفح. افتراض الـ16px لا يصحّ إلا إذا لم يُغيّره أحد. إذا زاد المستخدم حجم الخط الافتراضي لمتصفحه من إعدادات إمكانية الوصول — وهو أمر شائع بين ذوي ضعف البصر — فإن كل قيمة قائمة على rem تكبر تناسبيًا معه. أما قيم البكسل فلا تتغير: تبقى فقرة بحجم 16px عند 16px مهما كان تفضيل المستخدم في المتصفح.
- لهذا السبب تُفضّل إرشادات إمكانية الوصول استخدام rem لحجم الخط والمسافات. التصميم المبني بوحدة rem يحترم حجم النص الذي يختاره المستخدم من البداية إلى النهاية — العناوين، ونص المتن، والمسافات المحيطة بها، كلها تكبر معًا، فيبقى التصميم متناسبًا بدلًا من أن ينكسر عند تكبير النص.
- em نسبية إلى تداخلها الخاص، وهذا يتراكم. قيمة 1.5em داخل عنصر حجمه هو نفسه 1.5em تُعرض عند 2.25 ضعف الجذر — وهذا مفيد للمكوّنات التي يجب أن تتحجّم مع سياق حجم خطها الخاص (مثل حشوة الأزرار)، لكنه محفوف بالمخاطر لأي شيء متداخل على عدة مستويات.
- حيلة "62.5٪" القديمة — ضبط الجذر على 10px بحيث يصبح 1rem = 10px، لتسهيل الحساب الذهني — ما زالت تعمل، لكن يُستحسن تجنّبها في المشاريع الجديدة: معظم مكتبات المكوّنات تفترض جذرًا بحجم 16px، وتغييره قد ينتج أحجامًا غير متوقعة في أكواد الطرف الثالث.
- pt مُعرَّفة بالنسبة إلى px، لا العكس. يثبّت CSS النسبة عند 1in = 96px = 72pt، أي أن 1pt = 96/72 = 1.333px بالضبط. يهم هذا بشكل أساسي عند تصدير تصميم للطباعة أو PDF، حيث تكون pt هي الوحدة الأصلية — ويحافظ هذا التحويل على اتساق الأحجام بين الشاشة والطباعة.
الأسئلة الشائعة
لماذا تختلف قيمة em لدي عن rem؟
تُضرَب em في أقرب حجم خط محدَّد، وتتراكم عند التداخل: فقيمة 1.5em داخل عنصر بحجم 1.5em تساوي 2.25 ضعف الجذر. أما rem فتشير دائمًا إلى الجذر — وهذه القابلية للتنبؤ هي سبب انتشارها.
هل 1pt يساوي فعلاً 1.333px؟
في CSS نعم بحكم التعريف: 1in = 96px = 72pt. تتفق ملفات PDF المخصصة للطباعة مع CSS على هذه النسبة، رغم أن الحجم الفعلي يعتمد على دقة الشاشة الحقيقية (DPI).
لماذا توصي إرشادات إمكانية الوصول باستخدام rem بدلًا من px للنصوص؟
لأن rem تتحجّم مع تفضيل المستخدم لحجم الخط، بينما لا تفعل px ذلك. الشخص الذي يكبّر حجم النص الافتراضي في متصفحه — وهو تكيّف شائع لدى ضعاف البصر — يرى كل قيمة حجم خط ومسافة قائمة على rem تكبر تناسبيًا، في حين يبقى النص القائم على البكسل مقفلاً عند حجمه الأصلي، وهذا بالضبط نمط الفشل الذي تشير إليه تدقيقات إمكانية الوصول.
ماذا يحدث لقيم rem إذا غيّر المستخدم حجم الخط الافتراضي لمتصفحه؟
تتحجّم تلقائيًا. إذا تُرك حجم خط الجذر عند القيمة الافتراضية للمتصفح وضبط المستخدم تلك القيمة الافتراضية على 20px مثلًا بدلًا من 16px، فإن كل 1rem في CSS الخاص بك يساوي الآن 20px بدلًا من 16px — دون أي تعديل في الكود. لا يعمل هذا إلا إذا تُرك حجم خط الجذر نفسه غير محدَّد أو عُرِّف بوحدة نسبية، لا مثبّتًا بوحدة px.
هل ينبغي استخدام px على الإطلاق؟
نعم، للأشياء التي يجب ألا تتحجّم مع النص إطلاقًا: الحدود الشعرية، الأيقونات ذات الحجم الثابت، أو الظلال بحجم 1px. القاعدة العملية التي تتبعها معظم الفرق هي: rem لحجم الخط ومسافات التخطيط، em للحشوة النسبية إلى المكوّن، وpx فقط للتفاصيل التي يجب أن تبقى ثابتة بصريًا بغض النظر عن إعداد حجم النص لدى المستخدم.
أدوات مشابهة
الإبلاغ عن مشكلة
محول PX ↔ REM ↔ EM ↔ PT
التعليقات
لا توجد تعليقات بعد — كن أول من يكتب تعليقًا!