محوّل البكسل (px) إلى rem

آخر مراجعة للمحتوى:

24 بكسل تساوي 1.5 rem عند الحجم الأساسي الافتراضي 16 بكسل، و14 بكسل تساوي 0.875 rem. التحويل قسمة واحدة: المقاس بالبكسل مقسومًا على حجم الخط الأساسي. اكتب المقاس المأخوذ من التصميم في الحقل الأول، وإذا كانت صفحتك تضبط أساسًا آخر فاكتبه في حقل الحجم الأساسي.

px
rem
إلى

ما هي وحدة rem، ولماذا تُكتب بها مقاسات البكسل؟

ملفات التصميم تعطي المقاسات بالبكسل: خط العنوان 28 بكسل، والمسافة بين قسمين 32 بكسل. والبكسل في CSS وحدة ثابتة، ويعرّفها المعيار بأنها جزء من 96 جزءًا من البوصة[1]، ولهذا يعدّ محوّل البكسل إلى بوصات عند دقته الافتراضية 96 بكسل في البوصة الواحدة. أما وحدة rem فطول نسبي، والواحد منها يساوي حجم الخط المحسوب على عنصر html، أي العنصر الجذر للصفحة[1].

وتذكر موسوعة حسوب أن rem أُضيفت لحل مشكلة التراكم في وحدة em، فقيمها نسبية إلى حجم الخط في العنصر الجذر، ولا تتأثر بالعنصر الأب[2]. لذلك يكفي أن تعرف حجم خط عنصر html لتحوّل أي مقاس بالبكسل إلى rem. وبعد التحويل يتبع المقاس إعداد القارئ: العنوان الذي كان 24 بكسل يبقى 24 بكسل عند الإعداد الافتراضي، ويصير 30 بكسل عند القارئ الذي اختار «كبير» في Chrome أو «حجم خط كبير» في Edge.

شيفرة CSS فيها القاعدة .hero بحجم خط 60px وقاعدة للعناوين بحجم خط 220px
حجما الخط في هذه الصورة مكتوبان بالبكسل: 60px في القاعدة .hero، و220px في القاعدة التي تجمع .heading و.sub-heading. عند الأساس 16 بكسل يصير الأول 3.75rem والثاني 13.75rem، وبعدها يكبر الحجمان مع إعداد القارئ. الصورة: Ferenc Almasi، Unsplash.

كم rem في 24 بكسل؟

24 بكسل تساوي 1.5 rem عند حجم الخط الأساسي الافتراضي 16 بكسل. والصيغة قسمة واحدة: rem = البكسل ÷ حجم الخط الأساسي. فكل 16 بكسل تساوي 1 rem، والبكسل الواحد يساوي 0.0625 rem. ومن هنا يصير المقاس 8 بكسل مساويًا لـ0.5 rem. ويصير المقاس 32 بكسل مساويًا لـ2 rem.

إذا كانت ورقة الأنماط تضبط أساسًا آخر، فالقسمة تكون عليه هو. مع تقنية 62.5% يصبح الأساس 10 بكسل، فتصير 24 بكسل مساوية لـ2.4 rem. ومع أساس 20 بكسل تصير 24 بكسل مساوية لـ1.2 rem. اكتب الأساس في الحقل الثالث، فيعطيك المحوّل القيمة التي تكتبها في ورقة الأنماط.

بعض المقاسات لا تنقسم على 16 قسمة تامة، ولهذا تظهر النتيجة بأربع خانات عشرية على الأكثر. فالمقاس 13 بكسل يساوي 0.8125 rem، وCSS تقبل هذا الرقم كما هو. وزر «نسخ النتيجة» ينسخ الرقم وحده بنقطة عشرية، فتلصقه في ورقة الأنماط وتكتب بعده كلمة rem.

ما صيغة تحويل البكسل إلى rem؟

الصيغة هي rem = px ÷ font-size، وfont-size هنا حجم خط عنصر html. خذ عنوانًا حجمه 28 بكسل في التصميم. عند الأساس 16 بكسل تعطي 28 ÷ 16 = 1.75، فتكتب في ورقة الأنماط font-size: 1.75rem.

المقاسات التي تقبل القسمة على 4 تعطي قيمة بخانتين عشريتين على الأكثر، فالمقاس 12 بكسل يساوي 0.75 rem. وبقية المقاسات الزوجية تعطي ثلاث خانات، مثل المقاس 14 بكسل الذي يساوي 0.875 rem، والمقاسات الفردية تعطي أربع خانات، مثل المقاس 15 بكسل الذي يساوي 0.9375 rem. أما مقاس مثل 13.5 بكسل فتظهر فيه خانة خامسة، لذلك تُقرَّب النتيجة إلى أربع خانات وتصبح 0.8438 rem.

وللاتجاه المعاكس استعمل محوّل rem إلى بكسل. وإذا احتجت قيمة نسبية إلى حجم خط العنصر الأب، فحوّل المقاس في محوّل البكسل إلى em. وإذا كان المقاس في الملف بالنقاط (pt)، فحوّله إلى البكسل أولًا في محوّل النقاط إلى بكسل.

شيفرة CSS مضغوطة تظهر فيها مقاسات بالبكسل مثل font-size:13px وmargin:16px 0 20px
هذه ورقة أنماط مضغوطة، وكل المقاسات الظاهرة فيها بالبكسل. عند الأساس 16 بكسل يصير font-size:13px مساويًا لـ0.8125rem. ويصير margin:16px 0 20px مساويًا لـ1rem 0 1.25rem. الصورة: Rahul Mishra، Unsplash.

جدول تحويل البكسل إلى rem عند ثلاثة أحجام أساسية

المقاسات من 1 إلى 400 بكسل. العمود الأول للأساس الافتراضي 16 بكسل، والثاني لتقنية 62.5% التي تجعل الأساس 10 بكسل، والثالث للأساس 20 بكسل عند القارئ الذي اختار «كبير» في Chrome. والصفّان المميّزان هما 16 و24 بكسل.
المقاس بالبكسلبوحدة rem عند 16 بكسلبوحدة rem عند 10 بكسلبوحدة rem عند 20 بكسل
1 px0.0625 rem0.1 rem0.05 rem
2 px0.125 rem0.2 rem0.1 rem
4 px0.25 rem0.4 rem0.2 rem
6 px0.375 rem0.6 rem0.3 rem
8 px0.5 rem0.8 rem0.4 rem
10 px0.625 rem1 rem0.5 rem
11 px0.6875 rem1.1 rem0.55 rem
12 px0.75 rem1.2 rem0.6 rem
13 px0.8125 rem1.3 rem0.65 rem
14 px0.875 rem1.4 rem0.7 rem
15 px0.9375 rem1.5 rem0.75 rem
16 px1 rem1.6 rem0.8 rem
17 px1.0625 rem1.7 rem0.85 rem
18 px1.125 rem1.8 rem0.9 rem
20 px1.25 rem2 rem1 rem
22 px1.375 rem2.2 rem1.1 rem
24 px1.5 rem2.4 rem1.2 rem
25 px1.5625 rem2.5 rem1.25 rem
26 px1.625 rem2.6 rem1.3 rem
28 px1.75 rem2.8 rem1.4 rem
30 px1.875 rem3 rem1.5 rem
32 px2 rem3.2 rem1.6 rem
36 px2.25 rem3.6 rem1.8 rem
40 px2.5 rem4 rem2 rem
44 px2.75 rem4.4 rem2.2 rem
48 px3 rem4.8 rem2.4 rem
50 px3.125 rem5 rem2.5 rem
56 px3.5 rem5.6 rem2.8 rem
60 px3.75 rem6 rem3 rem
64 px4 rem6.4 rem3.2 rem
72 px4.5 rem7.2 rem3.6 rem
80 px5 rem8 rem4 rem
96 px6 rem9.6 rem4.8 rem
100 px6.25 rem10 rem5 rem
120 px7.5 rem12 rem6 rem
128 px8 rem12.8 rem6.4 rem
160 px10 rem16 rem8 rem
192 px12 rem19.2 rem9.6 rem
200 px12.5 rem20 rem10 rem
256 px16 rem25.6 rem12.8 rem
320 px20 rem32 rem16 rem
400 px25 rem40 rem20 rem
حسب المحوّل كل خلية بقسمة المقاس على الحجم الأساسي، وكتبها بأربع خانات عشرية على الأكثر، كما يعرضها حقل النتيجة.

كيف تُكتب أمثلة من ورقة الأنماط بوحدة rem؟

كل سطر مكتوب بالبكسل كما يأتي من التصميم، وبجانبه القيمة نفسها بوحدة rem عند الأساس 16 بكسل وعند الأساس 10 بكسل في تقنية 62.5%.
السطر بالبكسلبوحدة rem عند 16 بكسلبوحدة rem عند 10 بكسل (62.5%)
font-size: 16px1rem1.6rem
font-size: 14px0.875rem1.4rem
font-size: 28px1.75rem2.8rem
padding: 12px 24px0.75rem 1.5rem1.2rem 2.4rem
margin-bottom: 32px2rem3.2rem
border-radius: 8px0.5rem0.8rem
max-width: 1200px75rem120rem
@media (min-width: 768px)48rem48rem
في الصف الأخير تبقى القيمة 48rem في العمودين. فوحدة rem داخل استعلام الوسائط تُحسب من القيمة الأولية لحجم الخط، والقاعدة المكتوبة على عنصر html لا تصل إليها[3]. قسنا ذلك في Chrome وFirefox على صفحة فيها تقنية 62.5%: القاعدة @media (min-width: 48rem) بدأت تعمل عند عرض 768 بكسل. وحين رفعنا حجم الخط في المتصفح إلى 20 بكسل، بدأت تعمل عند عرض 960 بكسل.

أي صيغ الكتابة يقبلها محوّل البكسل إلى rem ويحسبها؟

يقبل كل حقل كل صيغة في قسمه من هذا الجدول ويحسبها، فلا حاجة إلى تنظيف المقاس قبل لصقه. الصقه كما نسخته من التصميم أو من ورقة الأنماط، بوحدة أو من غيرها، بالأرقام اللاتينية أو المشرقية. العمود الأوسط يعرض ما حسبه المحوّل نفسه عند الأساس 16 بكسل.
ما تكتبه أو تلصقهما يحسبه المحوّلما يحدث بهذه الصيغة
الحقل الأول: المقاس بالبكسل، والأساس 16 بكسل
241.5 remرقم وحده، كما يظهر المقاس في لوحة القياس في برنامج التصميم.
24px1.5 remالمقاس مع الوحدة ملاصقة له: نقرأ الرقم ونترك px.
24 بكسل1.5 remالوحدة مكتوبة بالعربية بعد مسافة: نأخذ الرقم ونترك الكلمة.
٢٤1.5 remأرقام مشرقية: نحوّلها إلى 24.
13.50.8438 remمقاس بكسر عشري: النتيجة تظهر بأربع خانات عشرية بعد التقريب.
1,20075 remالفاصلة التي تليها ثلاثة أرقام بالضبط نقرؤها فاصل آلاف، فالمقاس ألف ومئتا بكسل. ويظهر تحت الحقل تلميح بالقراءة الأخرى الممكنة، 1.2.
١٬٢٠٠75 remفاصل الآلاف العربي «٬» مع الأرقام المشرقية: المقاس نفسه، ألف ومئتا بكسل.
1.2000.075 remالنقطة نقرؤها في هذه الصفحة فاصلة عشرية حتى لو تلتها ثلاثة أرقام، فنقرأ 1.2 بكسل، ويظهر تحت الحقل تلميح. للألف والمئتين اكتب 1200 أو 1,200.
padding: 20px;1.25 remسطر كامل من ورقة الأنماط: نأخذ الرقم ونترك اسم الخاصية والفاصلة المنقوطة.
−8px-0.5 remعلامة الطرح الطباعية «−» قبل الرقم نقرؤها إشارة سالبة، كما في الهامش السالب.
حقل «حجم الخط الأساسي (font-size)»: ما يحسبه المحوّل هو الأساس
62.5%10 pxالنسبة كما تكتبها على عنصر html: 62.5% من الأساس الافتراضي 16 بكسل تساوي 10.
font-size: 18px18 pxسطر منسوخ من ورقة الأنماط: نأخذ الرقم 18 أساسًا.
١٦16 pxالأساس بالأرقام المشرقية.
جرّبنا كل صيغة في الحقل نفسه قبل كتابتها هنا. وإذا ظهر تحت الحقل طلب بإدخال رقم واحد، فأبقِ في الحقل المقاس وحده.

كيف أحوّل مقاسات Figma وورقة أنماط كاملة من px إلى rem؟

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

  1. مقاس من ملف تصميم

    انسخ المقاس بالبكسل من لوحة القياس، والصقه في الحقل الأول. وإذا كانت الصفحة تضبط حجم خط لعنصر html، فاكتبه في حقل الحجم الأساسي قبل أن تنسخ النتيجة.
  2. وضع Dev Mode في Figma

    في الخطط المدفوعة يعرض Dev Mode المقاسات بوحدة rem مباشرة، والأسماء هنا بالإنجليزية كما تظهر في واجهة Figma. في قسم Code من لوحة Inspect اضغط Inspect settings بجانب قائمة اللغة واختر الوحدة rem. ولتغيير الأساس اختر من المكان نفسه Set unit scale…، واكتب الأساس في نافذة Unit scale.
  3. دالة في Sass

    في Sass تُقسم الأرقام بالدالة math.div() من مكتبة sass:math[4]. فالدالة @function rem($px) { @return math.div($px, 16px) * 1rem; } تجعل rem(24px) تساوي 1.5rem.
  4. PostCSS لورقة أنماط كاملة

    الإضافة postcss-pxtorem تحوّل px إلى rem في ملفات CSS عند البناء[5]. أساسها الافتراضي 16، وفي إعدادها الافتراضي تحوّل خصائص الخط فقط: font وfont-size وline-height وletter-spacing، وتترك استعلامات الوسائط بالبكسل.

تحويل بكسل إلى وحدات أخرى

المصادر

  1. CSS Values and Units Module Level 4 — W3C
  2. الخاصية font-size — موسوعة حسوب
  3. Media Queries Level 4 — W3C
  4. sass:math — Sass
  5. postcss-pxtorem — GitHub
  6. مبادئ النفاذ إلى محتوى الويب 2.1 — W3C، ترجمة مركز مدى

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

آخر مراجعة للمحتوى: · كتبه وراجعه فريق Arteon

أسئلة شائعة عن تحويل البكسل إلى rem

كم rem في 16 بكسل؟

16 بكسل تساوي 1 rem عند الأساس الافتراضي 16 بكسل. ومع تقنية 62.5%، أي عند الأساس 10 بكسل، تساوي 1.6 rem.

كم rem في 14 بكسل و12 بكسل؟

14 بكسل تساوي 0.875 rem عند الأساس 16 بكسل، و12 بكسل تساوي 0.75 rem.

هل 24 بكسل تساوي 1.5 rem دائمًا؟

تساويها عند الأساس 16 بكسل فقط. فإذا كتبت الصفحة لعنصر html حجمًا آخر، فاقسم عليه: عند الأساس 10 بكسل تساوي 2.4 rem، وعند الأساس 20 بكسل تساوي 1.2 rem.

لماذا أقسم على 16؟

لأن حجم الخط الافتراضي في المتصفح يكون عادةً 16 بكسل، وهو الحجم المستعمل حين لا تضبط الصفحة حجمًا آخر[2]. وفي قياسنا كان هذا هو الحجم في Chrome وEdge وFirefox قبل أي تغيير في الإعدادات.

هل تغيّر تقنية 62.5% قيم rem في استعلامات الوسائط؟

لا تغيّرها. فالقاعدة @media (min-width: 48rem) تبدأ عند 768 بكسل مع التقنية ومن غيرها، لأن rem في استعلام الوسائط تُحسب من القيمة الأولية لحجم الخط[3]. لذلك حوّل حدود استعلامات الوسائط بالقسمة على 16.

ما الفرق بين تحويل البكسل إلى rem وتحويله إلى em؟

قيمة rem تُحسب من حجم خط عنصر html، فتقسم على الأساس نفسه في كل الصفحة. وقيمة em تُحسب من حجم خط العنصر الأب، فتقسم على حجم خط الأب. ولهذا الحساب محوّل البكسل إلى em.

هل أكتب سمك الحدود 1px بوحدة rem؟

إذا أردت أن يبقى الحد بسمك بكسل واحد عند كل إعداد، فاتركه 1px. وإذا كتبته 0.0625rem، صار سمكه 1.25 بكسل عند القارئ الذي اختار الأساس 20. والإضافة postcss-pxtorem تترك خاصية border بالبكسل في إعدادها الافتراضي[5].

هل يكبر النص المكتوب بوحدة rem مع إعداد القارئ؟

نعم، فالنص المكتوب بوحدة rem يكبر مع حجم الخط الذي يختاره القارئ في متصفحه، والنص المكتوب بالبكسل يبقى على مقاسه. ويتناول المعيار 1.4.4 «تغيير حجم النص» في مبادئ النفاذ إلى محتوى الويب هذه الحالة: أن يكبر النص إلى 200% دون خسارة المحتوى أو الوظيفة[6].

لقطة شاشة لأداة مجانية من Arteon: محوّل البكسل (px) إلى rem

ساعدنا في تحسين الأدوات

وجدت مقاسًا يعطي في متصفحك قيمة أخرى، أو لديك فكرة تحسّن المحوّل؟ اكتب لنا.