Box model
CSS-д элемент бүр дөрвөлжин хайрцаг гэж тооцогддог. Энэ хайрцаг нь дөрвөн давхаргаас бүрдэнэ. Энэ ойлголтыг box model гэдэг бөгөөд layout зохиоход заавал ойлгох ёстой үндэс суурь юм.
Box model-ийн дөрвөн давхарга
┌──────────────────────────────┐
│ margin │
│ ┌────────────────────────┐ │
│ │ border │ │
│ │ ┌──────────────────┐ │ │
│ │ │ padding │ │ │
│ │ │ ┌────────────┐ │ │ │
│ │ │ │ content │ │ │ │
│ │ │ └────────────┘ │ │ │
│ │ └──────────────────┘ │ │
│ └────────────────────────┘ │
└──────────────────────────────┘
- content — текст, зураг зэрэг бодит агуулга байрладаг
- padding — content болон border хоорондын дотоод зай
- border — хайрцагны хүрээ шугам
- margin — бусад элементтэй хоорондын гадна зай
Жишээ
.card {
/* Агуулгын хэмжээ */
width: 300px;
height: 200px;
/* Дотоод зай */
padding: 24px;
/* Хүрээ */
border: 2px solid #1e293b;
/* Гадна зай */
margin: 16px;
background-color: #0f172a;
}
Дээрх тохиолдолд .card элементийн нийт өргөн нь:
300px (content) + 24px + 24px (padding) + 2px + 2px (border) = 352px
box-sizing: border-box
Анхдагч тохиргоогоор (content-box) width нь зөвхөн content-ийн өргөнийг тодорхойлно. Padding, border нэмэгдэхэд нийт хэмжээ томордог — энэ нь тооцооллыг хүнд болгодог.
border-box тохируулснаар width болон height нь padding болон border-ийг багтаасан нийт хэмжээ болно:
/* content-box (анхдагч) */
.box-content {
box-sizing: content-box;
width: 300px;
padding: 24px;
border: 2px solid #1e293b;
/* нийт өргөн = 300 + 48 + 4 = 352px */
}
/* border-box (зөвлөмж) */
.box-border {
box-sizing: border-box;
width: 300px;
padding: 24px;
border: 2px solid #1e293b;
/* нийт өргөн = 300px — өөрчлөгдөхгүй */
}
Практик дээр бүх элементэд border-box тохируулдаг:
/* Бүх элементэд нэг дор тохируулах */
*,
*::before,
*::after {
box-sizing: border-box;
}
Энэ мөрийг CSS файлынхаа хамгийн дээд хэсэгт үргэлж бичнэ.
width ба height
.box {
width: 300px; /* тогтмол өргөн */
height: 200px; /* тогтмол өндөр */
max-width: 600px; /* дээд хязгаар өргөн */
min-width: 200px; /* доод хязгаар өргөн */
max-height: 400px;
min-height: 100px;
}
/* Хувиар — эцэг элементийн хэмжээтэй харьцангуй */
.full-width {
width: 100%;
}
DevTools-д box model харах
Chrome эсвэл Firefox-д F12 дарж DevTools нээнэ. Elements tab-д элемент сонгосны дараа Styles хэсгийн доор Computed tab-д box model-ийн визуал диаграммыг харж болно.
Аль ч элемент дээр баруун товч → Inspect хийхэд тухайн элементийн бүх давхаргын хэмжээ шууд харагдана.
Практик жишээ
/* Хуудасны тохируулга */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
/* Мэдэгдэл карт */
.alert {
width: 100%;
max-width: 480px;
padding: 16px 20px;
border: 1px solid #1e293b;
border-left: 4px solid #a78bfa; /* зүүн тал онцлох */
border-radius: 8px;
margin-bottom: 16px;
background-color: #0f172a;
color: #f1f5f9;
}
/* Товч */
.btn {
display: inline-block;
padding: 10px 20px;
border: 1px solid #a78bfa;
border-radius: 6px;
background-color: transparent;
color: #a78bfa;
cursor: pointer;
}
Дараагийн хичээлд:
Box model-ийн margin болон padding-ийг дэлгэрэнгүй авч үзнэ — shorthand бичих арга, auto margin ашиглан голлуулах, margin collapse гэж юу болдог талаар судална.