واحدها (Units)
آشنایی کامل با واحدهای CSS: px، em، rem، %، vw، vh و کاربردهای آنها
واحدهای CSS
انتخاب واحد مناسب، کلید طراحی منعطف و واکنشگرا است.
دستههای اصلی
| دسته | واحدها | توضیح |
|---|---|---|
| مطلق | px | ثابت و غیرقابل تغییر |
| نسبی به فونت | em, rem | نسبت به اندازه فونت |
| نسبی به ویوپورت | vw, vh, vmin, vmax | نسبت به صفحه نمایش |
| درصدی | % | نسبت به والد |
۱. px (پیکسل) — مطلق
.box {
width: 200px;
font-size: 16px;
margin: 20px;
}
۲. em — نسبی به والد
/* em نسبت به فونت والد */
.parent { font-size: 20px; }
.child { font-size: 1.5em; } /* ۳۰px = ۲۰ × ۱.۵ */
.child { padding: 2em; } /* ۶۰px = ۳۰ × ۲ */
⚠️ مشکل: em تودرتو ترکیبی میشود.
۳. rem — نسبی به ریشه ⭐
html { font-size: 16px; }
.box { font-size: 1.5rem; } /* ۲۴px — همیشه */
.box { padding: 2rem; } /* ۳۲px — همیشه */
rem همیشه نسبت به html است — ترکیبی نمیشود.
۴. % — درصد از والد
.parent { width: 800px; }
.child { width: 50%; } /* ۴۰۰px */
۵. vw و vh — ویوپورت
/* ۱vw = ۱٪ عرض صفحه */
.hero { width: 100vw; height: 100vh; }
/* ۵۰٪ عرض */
.half { width: 50vw; }
۶. vmin و vmax
/* vmin = کوچکترین بعد */
.box { font-size: 3vmin; }
/* vmax = بزرگترین بعد */
.box { font-size: 2vmax; }
مقایسه em و rem
| ویژگی | em | rem |
|---|---|---|
| مرجع | والد | html (ریشه) |
| تودرتو | ترکیبی ⚠️ | ثابت ✅ |
| پیشبینی | سخت | آسان ⭐ |
چه واحدی استفاده کنیم؟
| کاربرد | واحد پیشنهادی |
|---|---|
| فونت | rem ⭐ |
| Padding/Margin | rem یا em |
| عرض کانتینر | % یا max-width |
| ارتفاع هیرو | vh |
| مدیا کوئری | em |
| خطوط مرز | px |
توابع اندازه مدرن
/* min() — کوچکترین */
font-size: min(5vw, 3rem);
/* max() — بزرگترین */
font-size: max(1rem, 2vw);
/* clamp() — محدوده ⭐ */
font-size: clamp(1rem, 5vw, 3rem);
بهترین شیوهها
- برای فونت از
remاستفاده کنید - برای عرض کانتینر از
%یاmax-width - برای ارتفاع تمامصفحه از
vh - از
clamp()برای تایپوگرافی ریسپانسیو - برای border از
px(دقیق و ثابت) emبرای مدیا کوئری
نکات مهم
remهمیشه نسبت بهhtmlاستemدر تودرتو ترکیبی میشود100vwاسکرولبار را هم شامل میشودchبرابر عرض کاراکتر "0" است- تنظیم
font-sizeرویhtmlپایه rem را تغییر میدهد
این مبحث بخشی از دوره آموزش کامل CSS است.