- เดิมทีสามารถสร้างระยะห่างด้วย พร็อพเพอร์ตี CSS
gap ได้ แต่ ไม่สามารถจัดสไตล์ให้กับพื้นที่ gap เองได้ จึงต้องใช้วิธีอ้อมหลายแบบ เช่น องค์ประกอบเพิ่ม, border, pseudo-element เป็นต้น
- ฟีเจอร์ใหม่ CSS gap decorations ช่วยให้สามารถวาด เส้นคั่น (separator) ระหว่างไอเท็มในเลย์เอาต์ได้โดยตรง ด้วยพร็อพเพอร์ตีอย่าง
row-rule, column-rule เป็นต้น
- สามารถใช้การตกแต่งนี้ได้กับทุกเลย์เอาต์หลัก ทั้ง Grid, Flexbox, Multi-column และในอนาคต Masonry โดยไม่ต้องมีมาร์กอัปเพิ่มหรือเอลิเมนต์ส่วนเกิน ทำให้ปรับปรุงทั้งโครงสร้างและภาพลักษณ์ได้ด้วย CSS ล้วน
- รองรับ สไตล์ที่หลากหลาย (ความหนา สี ลวดลาย ฯลฯ) การทำซ้ำและการผสมกัน และควบคุมได้ละเอียดด้วย
repeat(), outset, paint-order เป็นต้น
- ขณะนี้ยังใช้ได้เฉพาะใน เบราว์เซอร์ตระกูล Chromium (Chrome/Edge 139+) เมื่อเปิด flag เท่านั้น และกำลังอยู่ระหว่างการทำให้เป็นมาตรฐานและขยายความสามารถ
ข้อจำกัดเดิมของ gap และการเปลี่ยนแปลง
- ก่อนหน้านี้ การจัดสไตล์พื้นที่ gap ทำได้ยาก และต้องเพิ่ม border หรือเอลิเมนต์ปลอมสำหรับ separator
- วิธีเหล่านี้มีข้อเสียหลายอย่าง ทั้งเรื่องขนาดเลย์เอาต์ การเข้าถึง และความซับซ้อนของมาร์กอัป
- ตอนนี้มีมาตรฐาน gap decorations แล้ว จึงสามารถใส่การตกแต่ง (เช่น เส้น) ลงในพื้นที่ระยะห่างได้ด้วย พร็อพเพอร์ตี CSS ง่ายๆ
แนะนำ CSS gap decorations
- column-rule: เดิมใช้ใน multi-column สำหรับวาดเส้นแบ่งแนวตั้ง (เช่น
column-rule: 1px solid black;)
- ตอนนี้พร็อพเพอร์ตีนี้สามารถใช้กับ flexbox, grid และอื่นๆ ได้แล้ว
.my-grid-container {
display: grid;
gap: 2px;
column-rule: 2px solid pink;
}
- row-rule: ใช้วาด separator ระหว่างแถว (แนวนอน)
.my-flex-container {
display: flex;
gap: 10px;
row-rule: 10px dotted limegreen;
column-rule: 5px dashed coral;
}
- การทำซ้ำ/ผสมหลายสไตล์: สามารถใช้
repeat() หรือคั่นด้วยเครื่องหมายจุลภาคเพื่อผสมสไตล์หลากหลายได้
.my-container {
display: grid;
gap: 2px;
row-rule:
repeat(2, 1px dashed red),
2px solid black,
repeat(auto, 1px dotted green);
}
- พร็อพเพอร์ตีควบคุมละเอียด: เช่น
row-rule-break, column-rule-break, row-rule-outset, column-rule-outset, gap-rule-paint-order สำหรับปรับตำแหน่ง จุดตัด ลำดับการซ้อนทับ ฯลฯ ได้อย่างละเอียด
ตัวอย่าง: การใช้งาน gap decorations ในทางปฏิบัติ
- หน้าตัวอย่างกำหนด
body เป็น grid และแยก header/nav/main/footer ด้วย gap
- ใช้
row-rule เพื่อใส่เส้นคั่นที่มีความหนา สี และสไตล์ต่างกัน
- เมนู nav ใช้ flexbox กับ
column-rule เพื่อวาดเส้นคั่นระหว่างรายการ
- พื้นที่ main ใช้ flexbox จัดวางรูปภาพและข้อความในรูปแบบ masonry พร้อมใช้
row-rule, column-rule เพื่อเน้นโครงสร้างแบบกริด
- สามารถปรับตำแหน่งเริ่ม/จบของเส้นได้อย่างละเอียดด้วย
column-rule-outset: 0; เป็นต้น
การรองรับของเบราว์เซอร์และการเปิดใช้งาน
- ตอนนี้ต้องใช้ เบราว์เซอร์พื้นฐาน Chromium เช่น Chrome/Edge 139+ และต้องเปิด flag (about://flags → Experimental Web Platform Features)
- กำลังอยู่ระหว่างการผลักดันให้เป็นมาตรฐานอย่างเป็นทางการ และแนะนำให้ช่วยทดลองพร้อมส่งฟีดแบ็ก
ศึกษาเพิ่มเติมและ Playground
ยังไม่มีความคิดเห็น