ToolDeck

محوّل وحدات CSS

تحويل وحدات CSS بين px وrem وem وvw وvh و%

px16
rem1
em1
vw1.111111
vh1.777778
%100
pt12
cm0.4233331
mm4.233331
in0.1666667
جرب أيضاً:منسّق CSSضاغط CSS

ما هو تحويل وحدات CSS؟

محوّل وحدات CSS هو أداة تُترجم قيم الطول بين أنظمة قياس CSS المختلفة. تُعرّف CSS ما يزيد على اثنتي عشرة وحدة طول مقسّمة إلى مجموعتين: وحدات مطلقة مثل px وpt وcm وin ترتبط بقياسات فيزيائية ثابتة، ووحدات نسبية مثل rem وem وvw وvh و% تعتمد على السياق كحجم الخط أو أبعاد إطار العرض.

تُحوّل المتصفحات جميع أطوال CSS إلى وحدات بكسل أثناء العرض. فحين تكتب 1.5rem يضرب المتصفح 1.5 في حجم الخط الجذري (عادةً 16px) للحصول على 24px. وحين تكتب 50vw يأخذ نصف عرض إطار العرض الحالي. فهم هذه العلاقات ضروري لبناء تصميمات تتكيّف مع مختلف الأجهزة وتحترم تفضيلات المستخدم كأحجام الخط المخصصة في المتصفح.

تُعرّف مواصفة CSS Values and Units Module Level 4 الصادرة عن W3C نسب التحويل الدقيقة بين جميع الوحدات المطلقة: 1in = 96px = 72pt = 2.54cm = 25.4mm. أما الوحدات النسبية فلا تملك نسبة ثابتة لأنها تعتمد على السياق أثناء التشغيل. يتيح لك محوّل وحدات CSS المجاني حساب هذه العلاقات فوراً بناءً على حجم الخط الجذري وأبعاد إطار العرض الخاصين بمشروعك، دون كتابة أي كود.

لماذا تستخدم محوّل وحدات CSS؟

تحويل وحدات CSS يدوياً يعني تذكّر النسب وفتح الآلة الحاسبة والتحقق من النتائج. هذه الأداة تُجري التحويل في متصفحك بسلاسة تامة.

تحويل فوري
أدخل القيمة واختر الوحدة المصدر وشاهد النتائج في جميع وحدات CSS العشر دفعةً واحدة. لا حاجة لإجراء حسابات منفصلة لـ px-to-rem أو px-to-vw أو px-to-pt.
🔒
بياناتك تبقى خاصة
جميع التحويلات تُجرى محلياً في متصفحك. لا تُرسَل أي قيم إلى خادم ولا تُسجَّل ولا تُخزَّن. أغلق التبويب وتختفي البيانات.
🎯
ضبط حسب مشروعك
حدّد حجم الخط الجذري وعرض إطار العرض وارتفاعه وحجم الخط الأصلي. يستخدم المحوّل هذه القيم لإنتاج نتائج دقيقة لوحدات rem وem وvw وvh و%.
📏
تغطية جميع وحدات طول CSS
يدعم px وrem وem وvw وvh و% وpt وcm وmm وin. سواء كنت تعمل على تصميمات الشاشات أو أوراق أنماط الطباعة أو طباعة الخطوط التكيّفية، كل وحدة مشمولة.

حالات استخدام محوّل وحدات CSS

تطوير الواجهة الأمامية
حوّل قيم البكسل من ملفات التصميم إلى rem لمكتبة المكونات. حين يُحدد نموذج Figma مسافة بادئة 24px، حوّلها إلى 1.5rem حتى يتكيّف التصميم مع تفضيل حجم الخط لدى المستخدم.
هندسة الواجهة الخلفية والواجهة الكاملة
أنشئ قوالب PDF أو بريد إلكتروني تُحدَّد فيها الأبعاد بوحدات pt أو cm. حوّل قيم CSS بالبكسل إلى أحجام نقاط جاهزة للطباعة للعرض من جانب الخادم باستخدام أدوات مثل Puppeteer أو wkhtmltopdf.
DevOps ومسارات CI
تحقق من أن رموز المسافات في نظام التصميم تستخدم وحدات متسقة عبر خطوات البناء. تحقق بسرعة من أن أساس 16px ينتج القيم rem المتوقعة في CSS المُوَلَّد.
ضمان الجودة والاختبار البصري
تحقق من الأنماط المحسوبة أثناء الاختبار عبر المتصفحات. حين يُظهر Chrome DevTools قيمة محسوبة تبلغ 14.4px، حوّلها إلى rem للتأكد من مطابقتها لـ 0.9rem المتوقعة من ورقة الأنماط.
تصوير البيانات
قدّر أحجام عناصر SVG أو canvas نسبةً إلى أبعاد إطار العرض. حوّل عرض الرسم البياني الثابت بالبكسل إلى وحدات vw حتى تملأ التصورات نسبةً ثابتة من الشاشة على مختلف أجهزة العرض.
تعلّم CSS
افهم العلاقة بين rem وem وpx بتجربة أحجام أساس مختلفة. غيّر حجم الخط الجذري من 16px إلى 18px وشاهد كيف تتغير كل قيمة rem.

مرجع وحدات طول CSS

تُعرّف CSS عشر وحدات طول مستخدمة بشكل شائع. الوحدات المطلقة لها نسبة تحويل ثابتة إلى البكسل. الوحدات النسبية تعتمد على السياق: حجم الخط الجذري بالنسبة لـ rem، وحجم الخط الأصلي بالنسبة لـ em، وإطار عرض المتصفح بالنسبة لـ vw وvh.

الوحدةالاسمالحجم الافتراضينسبةً إلى
pxPixel1pxFixed; 1px = 1/96 of 1in on screens
remRoot em16px (default)Relative to <html> font-size
emEmInheritedRelative to parent element font-size
vwViewport width1% of viewportRelative to browser window width
vhViewport height1% of viewportRelative to browser window height
%PercentageVariesRelative to parent property value
ptPoint1.333pxPrint unit; 1pt = 1/72 of 1in
cmCentimeter37.795pxPhysical unit; 1cm = 96px / 2.54
mmMillimeter3.7795pxPhysical unit; 1mm = 1cm / 10
inInch96pxPhysical unit; 1in = 96px (CSS spec)

الوحدات المطلقة مقابل النسبية في CSS

الاختيار بين الوحدات المطلقة والنسبية يؤثر على استجابة تصميمك لمختلف الشاشات وإعدادات المستخدم. لكل مجموعة مقايضاتها المميزة.

الوحدات المطلقة (px, pt, cm, mm, in)
الوحدات المطلقة تُنتج نفس الحجم الفيزيائي بصرف النظر عن السياق. استخدم px للحدود والظلال والعناصر التي يجب ألا تتغير حجمها. استخدم pt لأوراق أنماط الطباعة. تُحدد مواصفة CSS أن 1in = 96px، وإن كان الحجم الفيزيائي الفعلي يتفاوت تبعاً لكثافة نقاط الشاشة DPI.
الوحدات النسبية (rem, em, vw, vh, %)
الوحدات النسبية تتكيّف مع سياق مرجعها. استخدم rem لأحجام الخطوط والمسافات لاحترام تفضيلات المستخدم. استخدم em لتغيير الحجم الداخلي للمكون (الحشو نسبةً إلى حجم خط العنصر نفسه). استخدم vw وvh للتصميمات التي تملأ إطار العرض كأقسام البطل.

جدول تحويل px إلى rem الشائع

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

pxremptالاستخدام النموذجي
100.6257.5Small caption text
120.759Body text (compact)
140.87510.5Default body text
16112Root font-size (browser default)
181.12513.5Large body text
201.2515H4 heading
241.518H3 heading
32224H2 heading
48336H1 heading
64448Display / hero text

أمثلة برمجية

تُظهر هذه الأمثلة كيفية تحويل وحدات CSS برمجياً في JavaScript وPython وخصائص CSS المخصصة وSass.

JavaScript
// px to rem (given root font-size of 16px)
const pxToRem = (px, base = 16) => px / base
pxToRem(24)  // → 1.5

// rem to px
const remToPx = (rem, base = 16) => rem * base
remToPx(1.5) // → 24

// px to vw (given viewport width of 1440px)
const pxToVw = (px, viewport = 1440) => (px / viewport) * 100
pxToVw(360)  // → 25

// Dynamic calculation using getComputedStyle
const rootFontSize = parseFloat(
  getComputedStyle(document.documentElement).fontSize
) // → 16 on most browsers
Python
# CSS unit converter functions

def px_to_rem(px: float, base: float = 16) -> float:
    return px / base

def rem_to_px(rem: float, base: float = 16) -> float:
    return rem * base

def px_to_vw(px: float, viewport: float = 1440) -> float:
    return (px / viewport) * 100

def px_to_pt(px: float) -> float:
    return px * 72 / 96

print(px_to_rem(24))     # → 1.5
print(rem_to_px(2.5))    # → 40.0
print(px_to_vw(720))     # → 50.0
print(px_to_pt(16))      # → 12.0
CSS (calc & custom properties)
/* Define a base scale using rem */
:root {
  --base: 16px;       /* root font-size */
  --space-1: 0.25rem; /* 4px */
  --space-2: 0.5rem;  /* 8px */
  --space-4: 1rem;    /* 16px */
  --space-8: 2rem;    /* 32px */
}

/* Fluid typography: scales between 1rem (16px) and 2.5rem (40px) */
h1 {
  font-size: clamp(1rem, 2.5vw + 0.5rem, 2.5rem);
}

/* Viewport-relative hero height */
.hero {
  height: calc(100vh - 4rem); /* full viewport minus 64px header */
}

/* Percentage-based grid */
.sidebar { width: 25%; }     /* 360px on 1440px screen */
.content { width: 75%; }     /* 1080px on 1440px screen */
SCSS (mixin)
// Reusable px-to-rem function in Sass
@use "sass:math";

$base-font-size: 16px !default;

@function rem($px) {
  @return math.div($px, $base-font-size) * 1rem;
}

// Usage
.card {
  padding: rem(24px);       // → 1.5rem
  margin-bottom: rem(32px); // → 2rem
  border-radius: rem(8px);  // → 0.5rem
  font-size: rem(14px);     // → 0.875rem
}

الأسئلة الشائعة

ما هو حجم الخط الجذري الافتراضي في المتصفحات؟
تُطبّق جميع المتصفحات الرئيسية (Chrome وFirefox وSafari وEdge) حجم خط جذري افتراضياً قدره 16px. هذا يعني أن 1rem = 16px ما لم يتجاوز المستخدم أو ورقة الأنماط حجم خط عنصر html. بعض المستخدمين يزيدون هذا في إعدادات المتصفح لأغراض إمكانية الوصول، ولهذا يُعدّ rem الخيار الأفضل افتراضياً للنصوص مقارنةً بـ px.
كيف أُحوّل px إلى rem؟
اقسم قيمة البكسل على حجم الخط الجذري. مع الأساس الافتراضي 16px: 24px / 16 = 1.5rem. إذا كان مشروعك يُعيّن html {font-size: 10px} (إعادة تعيين شائعة)، فإن 24px / 10 = 2.4rem. الصيغة دائماً: rem = px / حجم-الخط-الجذري.
ما الفرق بين rem وem؟
rem نسبي إلى حجم خط العنصر الجذري (وسم html)، بينما em نسبي إلى حجم خط العنصر الأصلي الحالي. هذا يعني أن rem يُنتج أحجاماً متسقة عبر الصفحة بأكملها، بينما em يتراكم عند التداخل. فـ 2em داخل عنصر أصلي بـ 2em تصبح 4 أضعاف الحجم الجذري. استخدم rem للمسافات العامة وأحجام الخطوط؛ واستخدم em حين تريد تغيير الحجم نسبةً إلى النص الخاص بالمكون.
متى أستخدم وحدتي vw أو vh؟
استخدم vw للعناصر التي يجب أن تتكيّف مع عرض نافذة المتصفح، كأقسام البطل الممتدة على كامل العرض أو الطباعة السائلة (clamp مع vw). استخدم vh للأقسام الممتدة على الشاشة كاملةً أو التصميمات القائمة على ارتفاع إطار العرض. احذر من استخدام vh في متصفحات الجوال حيث يُغيّر شريط العنوان ارتفاع إطار العرض؛ تحلّ وحدة dvh (dynamic viewport height) الأحدث هذه المشكلة.
هل يمكنني مزج وحدات CSS مختلفة في الخاصية نفسها؟
نعم. تتيح لك دالة CSS calc() الجمع بين أي وحدات في تعبير واحد. على سبيل المثال، width: calc(100vw - 2rem) يطرح 32px (عند الأساس الافتراضي) من كامل عرض إطار العرض. يمكنك أيضاً مزج الوحدات في clamp()‏: font-size: clamp(1rem, 2vw + 0.5rem, 2.5rem) ينشئ طباعة سائلة تتكيّف بين 16px و40px.
كم عدد البكسلات في pt واحد في CSS؟
في CSS، 1pt = 1/72 من البوصة، و1 بوصة = 96px، إذن 1pt = 96/72 = 1.333px. هذه النسبة ثابتة في مواصفة CSS بصرف النظر عن كثافة نقاط الشاشة DPI. تُستخدم وحدة النقطة أساساً في أوراق أنماط الطباعة وتوليد ملفات PDF. لتصميم الشاشات، px أو rem خيارات أفضل.
هل إعادة تعيين حجم الخط إلى 62.5% لا تزال ممارسة جيدة؟
تعيين html {font-size: 62.5%} يجعل 1rem = 10px، مما يُبسّط الحساب الذهني (24px = 2.4rem). غير أنه يتطلب منك تعيين font-size صريح على عنصر body وقد يُسبّب مشكلات مع مكونات جهات خارجية تفترض الأساس الافتراضي 16px. التفضيل الحديث هو الإبقاء على الإعداد الافتراضي 16px واستخدام دالة Sass أو إضافة PostCSS للتعامل مع التحويل بدلاً من ذلك.