Browser ใช้ CSS box model กำหนดว่า element ควรปรากฏบน web page ยังไง Box model แสดงขนาด element และ border, padding, margins สามารถ style แต่ละส่วนแยกกันได้
ทุก element ถูกล้อมรอบด้วย box การเข้าใจกลไก boxes เป็นสิ่งจำเป็นสำหรับการจัดตำแหน่ง items บน web page ให้ตรงใจ
CSS box model ใช้กำหนดว่า box ควรปรากฏและจัดตำแหน่งอย่างไร model นี้อ้างถึง 4 ส่วนประกอบ—content, padding, border, margin—ที่รวมเป็น box ใน CSS บทเรียนนี้จะอธิบายพื้นฐาน CSS box model และส่วนหลักๆ
CSS Box Model
CSS box model เป็นโครงสร้างที่ใช้กับทุก boxes ใน CSS model นี้สั่ง browser ให้รู้ว่าส่วนต่างๆ ของ box สร้าง element ที่ปรากฏบน web page ยังไง Box model แสดง content, padding, border, margin ของ box
มาดูแต่ละ element ของ box model:
- Content: เนื้อหาของ box ที่ text, forms, images, web elements อื่นๆ จะปรากฏ
- Padding: ช่องว่างระหว่างเนื้อหา box และ border ของ box Padding โปร่งใส
- Border: เส้นขอบรอบเนื้อหา box หรือรอบ padding ถ้าระบุ padding value
- Margin: ช่องว่างระหว่างขอบนอกของ border และ elements อื่นๆ บน web page Padding โปร่งใส (หมายเหตุ: ควรเป็น Margin โปร่งใส)
มาอภิปรายแต่ละ component และการใช้งานทีละอย่าง
Content Area
Content area อยู่กลาง box model นี่คือที่ text, images, elements อื่นๆ ปรากฏใน web element ใช้ CSS properties height และ width กำหนดขนาด content area
โดย default ขนาด content area = ขนาด elements ภายใน ถ้ามีบรรทัดข้อความ box จะยาวและสูงเท่าบรรทัดนั้น
สมมติต้องการ design box สูง 200px กว้าง 200px ทำได้ด้วยโค้ด:
<html> <p>This is a box.</p> </html> <style> p { height: 200px; width: 200px; } </style>
กดปุ่มใน code editor ด้านบนเพื่อดู output ของ HTML/CSS code
ใช้ HTML
tag สร้าง paragraph ข้อความ จำไว้: ทุก element ใน web design อยู่ใน box ดังนั้น box model จึงใช้กับ
tag ใน CSS สร้าง rule ตั้ง height ของ
tags ทั้งหมดเป็น 200px และ width เป็น 200px
อ่านเพิ่ม: beginner's guide to CSS height and width
Padding Area
Padding area ขยาย content area สร้าง gap ระหว่างเนื้อหา box และ border ใช้สร้าง banners และ announcement elements
ใช้ CSS padding property สมมติต้องการ 25px padding รอบ box โค้ด:
<html> <p>This is a box.</p> </html> <style> p { height: 200px; width: 200px; padding: 20px; } </style>
กดปุ่มใน code editor ด้านบนเพื่อดู output
ระบุ "padding" property = 20px สร้าง gap 20px ระหว่าง content area และ border ตอนนี้มี gap ระหว่าง box และขอบหน้า
Border Area
Border area คือที่ border ของ box จะปรากฏ Borders เป็น colored outlines นอก padding ใช้สีไหนก็ได้ มี built-in designs ให้เลือก
สมมติต้องการเพิ่ม light blue border กว้าง 5px รอบ box:
<html> <p>This is a box.</p> </html> <style> p { height: 200px; width: 200px; padding: 20px; border: 5px solid lightblue; } </style>
กดปุ่มใน code editor ด้านบนเพื่อดู output
ใช้ CSS "border" property กำหนด light blue border กว้าง 5px solid style = เส้นเดียว สังเกต border ห่างจากเนื้อหาเพราะระบุ padding 20px
Margin Area
Margin area เป็นชั้นนอกสุดของ box model สร้าง empty gap แยก element จาก elements อื่นๆ บน web page
สมมติต้องการ space 10px ระหว่างสอง boxes:
<html> <p>This is a box.</p> <p>This is another box.</p> </html> <style> p { height: 200px; width: 200px; padding: 20px; border: 5px solid lightblue; margin: 10px; } </style>
กดปุ่มใน code editor ด้านบนเพื่อดู output
ครั้งนี้ระบุสอง boxes ใน HTML ใช้ "margin" property 10px ทำให้มี gap 10px ระหว่าง boxes สร้าง gap ระหว่าง border ของ boxes และ elements อื่นๆ
อ่านเพิ่ม: tutorial on CSS margin
Width และ Height Calculations
ข้อผิดพลาดมือใหม่: คิดว่า height/width ของ element รวม padding, margins, borders ผิด!
Height/width properties ตั้งค่า height/width ของ content area เท่านั้น ไม่นับ elements อื่นๆ
หากต้องการรู้ว่า complete box example ใช้พื้นที่เท่าไหร่ คำนวณจากค่าที่ระบุใน margin area example:
- Height: 200px
- Width: 200px
- Padding: 20px
- Margin: 10px
- Border: 5px
คำนวณ width:
- 200px (width) +
- 40px (left และ right padding) +
- 10px (left และ right border) +
- 20px (left และ right margin)
รวม 270px
คำนวณ height: ใช้ height ของ box + top/bottom values ของ padding, border, margin
สรุป
CSS box model เป็นโครงสร้าง render element บน web page ทุก HTML element เป็น rectangular box Box model กำหนดว่า content, padding, border, margins ปรากฏอย่างไร
อยากเรียนรู้ design web pages ด้วย CSS เพิ่ม? ดู How to Learn CSS guide มี top learning resources