ویژگی تصویر

واحدهای اندازه‌گیری در CSS — راهنمای کامل و عملی

  /  CSS   /  واحد های اندازه گیری در CSS
بنر تبلیغاتی الف

در طراحی وب، انتخاب واحد مناسب برای اندازه‌ها تاثیر مستقیم روی دسترسی، انعطاف‌پذیری و تجربه کاربری دارد. این مقاله مروری جامع و عملی بر واحدهای اندازه‌گیری در CSS ارائه می‌دهد، تفاوت‌ها، موارد کاربرد و نکات پیشرفته‌ای مثل calc() و clamp() را توضیح می‌دهد تا در پروژه‌های واقعی بتوانید تصمیم درست بگیرید.

دسته‌بندی کلی: واحدهای مطلق و نسبی

واحدها به‌طور کلی به دو گروه تقسیم می‌شوند:

  • واحدهای مطلق: مانند px، cm، mm، in، pt، pc — اندازه‌های ثابت که مستقل از فونت یا پنجره مرورگر هستند.
  • واحدهای نسبی: مانند em، rem، %، vw، vh، vmin، vmax، ch، ex، fr — نسبت به یک مقدار مرجع یا پنجره نمایش تعریف می‌شوند.

واحدهای پرکاربرد و مثال‌های عملی

px (پیکسل)

پیکسل واحد رایج برای کنترل دقیق است. مناسب برای حاشیه‌ها، آیکون‌ها یا مواردی که باید دقیقا هم‌اندازه باشند. با این حال برای تایپوگرافی و طراحی واکنش‌گرا بهتر است از واحدهای نسبی استفاده شود.

em و rem

em نسبت به فونت المان جاری است؛ rem نسبت به فونت ریشه (:root یا html) می‌باشد. کاربرد اصلی در اندازه فونت، padding و margin است.

html { font-size: 16px; }
h1 { font-size: 2rem; } /* 32px */p  { font-size: 1rem; } /* 16px */.small { font-size: 0.875rem; } /* 14px */.container { padding: 2em; } /* 2 برابر فونت المان والد */

توضیح: این کد نشان می‌دهد که rem براساس font-size ریشه محاسبه می‌شود. اگر html برابر 16px باشد، 2rem معادل 32px است. استفاده از rem برای سازگاری اندازه‌ها در کل سایت توصیه می‌شود.

نکته عملی: از ترفند html { font-size: 62.5%; } برای راحتی محاسبات (1rem = 10px) استفاده می‌کنند، اما این روش می‌تواند دسترسی را تحت تاثیر قرار دهد؛ بهتر است font-size ریشه را ثابت نگه داشته و از ابزارهایی مانند clamp() برای واکنش‌پذیری استفاده کنید.

درصد (%)

درصد نسبی به اندازه والد است و برای عرض‌ها و ارتفاع‌ها در لایه‌بندی بسیار مناسب است، به‌خصوص هنگام کار با عناصر درون یک کانتینر منعطف.

واحدهای Viewport: vw، vh، vmin، vmax

این واحدها نسبت به ابعاد پنجره مرورگر تعریف می‌شوند. 1vw برابر 1٪ عرض viewport و 1vh برابر 1٪ ارتفاع viewport است. vmin/vmax از کوچک‌ترین/بزرگ‌ترین مقدار بین vw و vh پیروی می‌کنند. مناسب برای عناصر تمام‌صفحه یا فونت‌هایی که با اندازه پنجره تغییر کنند.

.hero {
  height: 100vh;
  font-size: 4vw;
}

توضیح: .hero تمام ارتفاع پنجره را اشغال می‌کند و اندازه فونت بر اساس عرض پنجره تعیین شده است. دقت: فونت‌های خیلی بزرگ یا خیلی کوچک در Viewport ممکن است خوانایی را کاهش دهند.

ch و ex

ch برابر عرض رقم “0” در فونت جاری است و ex برابر ارتفاع حرف “x”. برای کنترل عرض ورودی‌ها یا متون monospace کاربردی‌اند.

واحدهای فیزیکی: cm، mm، in، pt، pc

برای چاپ یا محیط‌هایی که ابعاد فیزیکی مهم است استفاده می‌شوند. در مرورگرها گاهی با DPI تنظیمات کاربر تداخل دارد؛ بنابراین در طراحی وب معمولاً کمتر کاربرد دارند.

فِر (fr) در CSS Grid

fr واحدی است که فضای آزاد در Grid را تقسیم می‌کند. مثال: grid-template-columns: 1fr 2fr; ستون دوم دو برابر فضای قابل‌تخصیص ستون اول را می‌گیرد.

.layout {
  display: grid;
  grid-template-columns: 1fr 3fr;
  gap: 16px;
}

توضیح: این ساختار برای تقسیم انعطاف‌پذیر فضای محتوا ایده‌آل است، به‌خصوص هنگام طراحی لایه‌های واکنش‌گرا بدون محاسبات دستی عرض‌ها.

عملگرها و توابع: calc()، min()، max()، clamp()

این توابع به شما اجازه می‌دهند واحدهای مختلف را ترکیب کنید و رفتارهای پویا تعریف کنید.

.card {
  width: calc(100% - 40px);
  font-size: clamp(1rem, 1rem + 1vw, 1.5rem);
}

توضیح: width با calc مقدار 40px را از عرض والد کم می‌کند. clamp اندازه فونت را بین 1rem و 1.5rem محدود کرده و در میانه مقدار وابسته به vw را اعمال می‌کند. این الگو ترکیبی از کنترل دقیق و واکنش‌پذیری است.

راهنمای عملی و بهترین روش‌ها

  • برای تایپوگرافی از rem استفاده کنید تا تغییر اندازه ریشه اثر یک‌دست داشته باشد.
  • برای spacing داخلی که باید نسبت به فونت تغییر کند از em استفاده کنید.
  • برای طرح‌بندی واکنش‌گرا از %، fr و واحدهای viewport همراه با clamp() استفاده کنید.
  • از px برای مواردی که باید دقیق و ثابت باشند (مثل تصاویر آیکون کوچکتر) استفاده کنید، اما با احتیاط.
  • از ترکیب calc() برای حل مسایل spacing پیچیده و از min()/max() و clamp() برای جلوگیری از اندازه‌های غیرقابل‌خواندن بهره ببرید.
  • دسترسی: هرگز کاربر را از کنترل اندازه فونت محروم نکنید؛ استفاده از واحدهای نسبی باعث تطبیق بهتر با تنظیمات کاربر می‌شود.

جدول مقایسه سریع

واحدمنظورمزایامعایب
pxپیکسلدقیق، پیش‌بینی‌پذیرغیرقابل-انعطاف برای دسترسی
remنسبت به ریشهسازگار و قابل تنظیم سایت‌محورنیاز به مدیریت font-size ریشه
emنسبت به والدخوب برای padding/margin وابسته به فونتممکن است پیچیدگی سلسله‌مراتبی ایجاد کند
vw/vhنسبت به viewportخوب برای طراحی‌های تمام‌صفحهممکن است خوانایی را در پنجره‌های کوچک کاهش دهد
frGrid fractionساده برای تقسیم فضای انعطاف‌پذیرتنها در Grid کاربرد دارد

مثال پیشرفته: اندازه فونت واکنش‌گرا با clamp

:root {
  font-size: 16px;
}
h1 {
  font-size: clamp(1.5rem, 2rem + 1.5vw, 3rem);
}

توضیح: این تنظیم باعث می‌شود h1 بین 1.5rem و 3rem باقی بماند و به‌صورت ملایم با افزایش عرض صفحه بزرگ‌تر شود؛ همواره در بازه‌ای قابل‌خواندن قرار می‌گیرد.

نتیجه‌گیری و نکات نهایی

انتخاب واحد مناسب بخشی از طراحی هوشمند است: از rem برای تایپوگرافی، em برای فواصل وابسته به فونت، fr و درصد برای لایه‌بندی و vw/vh برای المان‌های تمام‌صفحه استفاده کنید. از calc() و clamp() بهره ببرید تا اندازه‌ها هم دقیق و هم واکنش‌پذیر باشند. همیشه تست در دستگاه‌ها و تنظیمات دسترسی مختلف انجام دهید تا تجربه‌ی همه کاربران بهینه باشد.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: