The Gap Strikes Back: CSS Gap ที่จัดสไตล์ได้แล้ว
(css-tricks.com)- เดิมทีสามารถสร้างระยะห่างด้วย พร็อพเพอร์ตี 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
- ร่างมาตรฐาน CSS Gap Decorations Module Level 1
- Microsoft Edge explainer
- สามารถทดลองดูการผสมผสานของการตกแต่งแบบต่างๆ ได้แบบอินเทอร์แอ็กทีฟใน Playground
- หากต้องการเสนอประเด็นเกี่ยวกับฟีเจอร์ ความเข้ากันได้ หรือฟีดแบ็ก สามารถส่งได้ที่ Chromium issue tracker
ยังไม่มีความคิดเห็น