ทุก element บนหน้าเว็บถูกมองเป็นกล่อง กล่องหนึ่งประกอบด้วย content, padding, border และ margin การเข้าใจ Box Model จะช่วยให้ควบคุมขนาด ระยะห่าง และการจัดวาง element ได้แม่นยำ
margin
border
padding
content
Content Box คือพื้นที่เนื้อหาจริง เช่น ข้อความ รูปภาพ หรือองค์ประกอบภายใน กำหนดได้ด้วย width และ height
.box {
width: 240px;
height: 120px;
}
เมื่อใช้ค่า default box-sizing: content-box ความกว้าง 240px จะนับเฉพาะ content ไม่รวม padding และ border
Padding คือช่องว่างระหว่างเนื้อหาและ border เป็นช่องว่างภายในกล่อง
.card {
padding: 16px;
}
Padding ช่วยให้เนื้อหาไม่ติดขอบ ทำให้ UI อ่านง่ายขึ้น
Border คือเส้นกรอบของ element สามารถกำหนด style, width และ color ได้
.card {
border: 1px solid #d0d0d0;
}
ตัวอย่าง style ที่ใช้ได้ เช่น solid, dashed, dotted, double
Margin คือช่องว่างภายนอก border ใช้เว้นระยะระหว่าง element
.card {
margin-bottom: 24px;
}
Margin ไม่ใช่พื้นที่ภายใน element แต่เป็นระยะห่างระหว่างกล่องกับสิ่งรอบข้าง
box-sizingbox-sizing กำหนดวิธีคำนวณขนาดกล่อง
content-box.box {
box-sizing: content-box;
width: 200px;
padding: 20px;
border: 2px solid black;
}
ความกว้างจริง = 200 + 40 + 4 = 244px
border-box.box {
box-sizing: border-box;
width: 200px;
padding: 20px;
border: 2px solid black;
}
ความกว้างจริงยังเป็น 200px โดยรวม content, padding และ border แล้ว
แนะนำให้ตั้งค่าพื้นฐาน:
*, *::before, *::after {
box-sizing: border-box;
}
ใน DevTools แท็บ Elements สามารถเลือก element แล้วดู Box Model ได้ใน panel Styles หรือ Computed เพื่อดูขนาด content, padding, border และ margin จริง
ขั้นตอน:
สร้างกล่อง .profile-card ที่มี width, padding, border, margin และทดลองเปลี่ยน box-sizing ระหว่าง content-box กับ border-box
box-sizing: border-box มีข้อดีอย่างไรwidth ที่กำหนด