درس ۷: مدل جعبه
یادگیری مدل جعبه CSS و کنترل فضا و اندازه عناصر
مدل جعبه CSS چیست؟
مدل جعبه (Box Model) یکی از مهمترین مفاهیم در CSS است که نحوه محاسبه اندازه و فضای عناصر HTML را تعریف میکند. هر عنصر HTML به صورت یک جعبه مستطیلی در نظر گرفته میشود که شامل چهار بخش اصلی است.
اجزای مدل جعبه:
- محتوا (Content): فضای داخلی که محتوای واقعی در آن قرار میگیرد
- پدینگ (Padding): فضای خالی بین محتوا و حاشیه
- حاشیه (Border): خط دور عنصر
- مارژین (Margin): فضای خالی بین عنصر و عناصر مجاور
فرمول محاسبه اندازه:
عرض کل = width + padding-left + padding-right + border-left + border-right + margin-left + margin-right
ارتفاع کل = height + padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
ویژگیهای اندازه
CSS ویژگیهای مختلفی برای کنترل اندازه عناصر ارائه میدهد:
ویژگیهای اصلی:
width
- عرض عنصرheight
- ارتفاع عنصرmin-width
- حداقل عرضmax-width
- حداکثر عرضmin-height
- حداقل ارتفاعmax-height
- حداکثر ارتفاع
مثالها:
.box {
width: 300px;
height: 200px;
min-width: 200px;
max-width: 500px;
}
پدینگ (Padding)
پدینگ فضای داخلی بین محتوا و حاشیه عنصر است. این فضا بخشی از عنصر محسوب میشود و رنگ پسزمینه عنصر را دارد.
ویژگیهای پدینگ:
padding-top
- پدینگ بالاpadding-right
- پدینگ راستpadding-bottom
- پدینگ پایینpadding-left
- پدینگ چپpadding
- میانبر برای همه جهات
روشهای تعریف padding:
/* یک مقدار - همه جهات */
padding: 20px;
/* دو مقدار - بالا/پایین، چپ/راست */
padding: 10px 20px;
/* سه مقدار - بالا، چپ/راست، پایین */
padding: 10px 20px 15px;
/* چهار مقدار - بالا، راست، پایین، چپ */
padding: 10px 15px 20px 25px;
حاشیه (Border)
حاشیه خطی است که دور عنصر کشیده میشود و بین پدینگ و مارژین قرار دارد.
ویژگیهای حاشیه:
border-width
- ضخامت حاشیهborder-style
- نوع حاشیهborder-color
- رنگ حاشیهborder
- میانبر برای همه ویژگیها
انواع border-style:
solid
- خط ممتدdashed
- خط چینdotted
- خط نقطهایdouble
- خط دوتاییgroove
- شیاردارridge
- برجستهinset
- فرورفتهoutset
- برآمده
مثالها:
/* روش کامل */
border-width: 2px;
border-style: solid;
border-color: #333;
/* روش میانبر */
border: 2px solid #333;
/* حاشیه برای جهات مختلف */
border-top: 1px solid red;
border-right: 2px dashed blue;
تمرین عملی: مدل جعبه
در ادامه، مثالی از مدل جعبه و تأثیر ویژگیهای مختلف را مشاهده میکنید. کد را ویرایش کرده و تغییرات را ببینید:
مارژین (Margin)
مارژین فضای خالی بیرون از عنصر است که بین عنصر فعلی و عناصر مجاور قرار میگیرد.
ویژگیهای مارژین:
margin-top
- مارژین بالاmargin-right
- مارژین راستmargin-bottom
- مارژین پایینmargin-left
- مارژین چپmargin
- میانبر برای همه جهات
مقادیر خاص margin:
auto
- مارژین خودکار (برای وسطچین کردن)0
- بدون مارژین- مقادیر منفی - برای همپوشانی عناصر
وسطچین کردن عناصر:
.center {
width: 300px;
margin: 0 auto; /* وسطچین افقی */
}
Box-sizing
ویژگی box-sizing نحوه محاسبه اندازه کل عنصر را تعیین میکند:
مقادیر box-sizing:
- content-box (پیشفرض): width و height فقط محتوا را شامل میشود
- border-box: width و height شامل محتوا، padding و border میشود
مثال:
/* content-box */
.box1 {
width: 200px;
padding: 20px;
border: 5px solid black;
/* عرض کل: 200 + 40 + 10 = 250px */
}
/* border-box */
.box2 {
box-sizing: border-box;
width: 200px;
padding: 20px;
border: 5px solid black;
/* عرض کل: 200px */
}
تنظیم سراسری:
* {
box-sizing: border-box;
}
Margin Collapse
در برخی موارد، مارژینهای عمودی عناصر مجاور با هم ترکیب میشوند. این پدیده Margin Collapse نامیده میشود.
قوانین Margin Collapse:
- فقط مارژینهای عمودی (top و bottom) collapse میشوند
- مارژینهای افقی (left و right) collapse نمیشوند
- بزرگترین مارژین باقی میماند
- فقط در عناصر block اتفاق میافتد
مثال:
.element1 {
margin-bottom: 30px;
}
.element2 {
margin-top: 20px;
}
/* فاصله بین عناصر: 30px (نه 50px) */
جلوگیری از Margin Collapse:
- استفاده از padding به جای margin
- اضافه کردن border یا padding به عنصر والد
- استفاده از flexbox یا grid
- تغییر display به inline-block
تمرینهای عملی
برای تسلط بیشتر بر مطالب این درس، تمرینهای زیر را انجام دهید:
تمرین ۱: کارت محصول
کارتی برای نمایش محصول ایجاد کنید که شامل تصویر، عنوان، توضیح و قیمت باشد.
تمرین ۲: باکسهای مختلف
سه باکس با اندازههای مختلف ایجاد کنید و آنها را در یک ردیف قرار دهید.
تمرین ۳: فرم با فاصلهبندی
فرمی ایجاد کنید که فیلدها فاصله مناسب از هم داشته باشند.
تمرین ۴: مقایسه box-sizing
دو عنصر مشابه ایجاد کنید، یکی با content-box و دیگری با border-box.
نکات مهم و بهترین شیوهها
بهترین شیوهها:
- از box-sizing: border-box استفاده کنید
- برای وسطچین کردن از margin: 0 auto استفاده کنید
- از واحدهای نسبی (em, rem, %) استفاده کنید
- فاصلهبندی منطقی و سازگار ایجاد کنید
- از ابزارهای توسعهدهنده برای بررسی box model استفاده کنید
نکات مهم:
- مارژینهای منفی امکان همپوشانی عناصر را فراهم میکنند
- پدینگ نمیتواند منفی باشد
- مارژینهای عمودی collapse میشوند
- border-radius بر روی border اعمال میشود
- outline خارج از box model قرار دارد
اشتباهات رایج:
- فراموش کردن box-sizing
- استفاده نادرست از margin برای فاصله داخلی
- عدم درنظرگیری margin collapse
- استفاده از اندازههای ثابت برای همه عناصر
- عدم تست در اندازههای مختلف صفحه
ادامه یادگیری
در درس بعدی با تایپوگرافی و کنترل فونتها در CSS آشنا خواهید شد.