عرض و ارتفاع
آشنایی با width و height در CSS، min/max-width و واحدهای اندازهگیری
عرض و ارتفاع در CSS
ویژگیهای width و height اندازه عنصر را مشخص میکنند. درک درست این ویژگیها برای چیدمان صحیح صفحه ضروری است.
ویژگیهای اصلی
| ویژگی | توضیح |
|---|---|
width | عرض عنصر |
height | ارتفاع عنصر |
min-width | حداقل عرض |
max-width | حداکثر عرض ⭐ |
min-height | حداقل ارتفاع |
max-height | حداکثر ارتفاع |
مقادیر width و height
| مقدار | توضیح |
|---|---|
auto | خودکار (پیشفرض) — محتوا تعیین میکند |
| عدد + واحد | 200px، 50%، 10em |
fit-content | اندازه متناسب با محتوا |
min-content | کوچکترین اندازه ممکن |
max-content | بزرگترین اندازه محتوا |
واحدهای اندازهگیری
| واحد | نوع | توضیح |
|---|---|---|
px | مطلق | ۱ پیکسل صفحه |
% | نسبی | درصد از عنصر والد |
em | نسبی | نسبت به فونت عنصر |
rem | نسبی | نسبت به فونت ریشه (html) |
vw | نسبی | ۱٪ عرض ویوپورت |
vh | نسبی | ۱٪ ارتفاع ویوپورت |
vmin | نسبی | کوچکترین ویوپورت |
vmax | نسبی | بزرگترین ویوپورت |
اهمیت max-width ⭐
استفاده از max-width بهجای width یکی از مهمترین اصول ریسپانسیو است:
/* ❌ بد — در موبایل سرریز میکند */
.container {
width: 1200px;
}
/* ✅ خوب — خود را با صفحه تطبیق میدهد */
.container {
max-width: 1200px;
width: 100%;
}
min-width و max-width با هم
.fluid-box {
width: 100%;
min-width: 300px; /* کوچکتر از این نمیشود */
max-width: 800px; /* بزرگتر از این نمیشود */
}
ارتفاع (height)
⚠️ تنظیم height معمولاً توصیه نمیشود — بگذارید محتوا تعیین کند:
/* ❌ بد — ارتفاع ثابت */
.card {
height: 300px; /* اگر محتوا بیشتر شود سرریز میکند */
}
/* ✅ خوب — اجازه دهید محتوا رشد کند */
.card {
min-height: 200px; /* حداقل ارتفاع */
/* max-height هم میتوان اضافه کرد */
}
ارتفاع تمام صفحه (100vh)
.hero {
height: 100vh; /* کل ارتفاع صفحه */
/* یا */
height: 100dvh; /* dynamic viewport height (مدرن) */
}
width در عناصر مختلف
| عنصر | رفتار پیشفرض |
|---|---|
block (div, p) | ۱۰۰٪ عرض والد |
inline (span, a) | به اندازه محتوا — width بیتأثیر |
| inline-block | قابل تنظیم width/height |
| flex item | بر اساس flex rules |
ویژگیهای sizing مدرن
/* متناسب با محتوا */
.box {
width: fit-content; /* به اندازه محتوای داخلش */
}
/* حداقل سایز محتوا */
.min-box {
width: min-content; /* کوتاهترین کلمه */
}
/* حداکثر سایز محتوا */
.max-box {
width: max-content; /* بدون شکستن خط */
}
توابع min()، max()، clamp()
/* min — کوچکتر را انتخاب میکند */
.box {
width: min(100%, 600px);
/* در موبایل ۱۰۰٪، در دسکتاپ ۶۰۰px */
}
/* max — بزرگتر را انتخاب میکند */
.text {
font-size: max(16px, 2vw);
/* حداقل ۱۶px، در صفحه بزرگ بیشتر */
}
/* clamp(min, ideal, max) ⭐ */
.title {
font-size: clamp(1rem, 5vw, 3rem);
/* حداقل ۱rem، ایدهآل ۵vw، حداکثر ۳rem */
}
بهترین شیوهها
- از
max-widthبهجایwidthبرای کانتینرها استفاده کنید - از
min-heightبهجایheightثابت استفاده کنید - از
clamp()برای فونت ریسپانسیو استفاده کنید - واحدهای نسبی (
rem،em،%) را ترجیح دهید - برای تصاویر از
max-width: 100%استفاده کنید - از
100vhبرای هیروهای تمامصفحه استفاده کنید
نکات مهم
- عناصر inline به
widthوheightپاسخ نمیدهند - در حالت پیشفرض،
paddingوborderبه عرض اضافه میشوند - با
box-sizing: border-boxاین مشکل حل میشود vwوvhنسبت به ویوپورت هستند، نه والد- تنظیم
height: 100%فقط کار میکند که والد هم ارتفاع مشخص داشته باشد
این مبحث بخشی از دوره آموزش کامل CSS است.