โค้ดสไนเป็ต CSS สมัยใหม่: เลิกเขียน CSS เหมือนปี 2015 ได้แล้ว
(modern-css.com)- ชุดโค้ดที่นำ เทคนิคแฮ็ก CSS แบบเก่า มาเปรียบเทียบแบบเคียงข้างกับ ไวยากรณ์ CSS เนทีฟสมัยใหม่ ที่ใช้แทนได้
- ใช้มาตรฐานสมัยใหม่อย่าง Grid, Flexbox, OKLCH colors, container query, scroll-timeline เพื่อลดการพึ่งพา JavaScript
- แบ่งตามหัวข้ออย่าง สี เลย์เอาต์ แอนิเมชัน ซีเลกเตอร์ ไทโปกราฟี และเวิร์กโฟลว์ พร้อมนำเสนอทางเลือกสมัยใหม่ของแต่ละความสามารถ
- มาตรฐาน CSS รุ่นใหม่ช่วย ลดการพึ่งพา JS, Sass และไลบรารีภายนอก พร้อม ใช้ความสามารถเนทีฟของเบราว์เซอร์ ได้อย่างเต็มที่
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
CSS ในปี 2025 ฟังดูเหมือนชวนให้กลับไปเขียน inline style แบบปี 2005 ลงใน HTML โดยตรง
กำลังพูดถึง Tailwind นั่นแหละ แต่สุดท้ายก็เท่ากับมองข้ามการแยกรูปแบบออกจากการนำเสนอ
ถ้า HTML ดูแลเฉพาะคอนเทนต์จริง ๆ และ CSS ดูแลเฉพาะสไตล์จริง ๆ เราก็คงไม่ต้องสร้าง div soup แบบ
.container-wrapper .container .container-innerความจริงที่ว่าต้องแก้ HTML ทุกครั้งเวลาเปลี่ยนเลย์เอาต์ก็คือหลักฐาน
โค้ดที่เกี่ยวกับคอมโพเนนต์อยู่รวมกันในที่เดียว ไม่ต้องสลับไฟล์ไปมา
เลย์เอาต์กับสไตล์คือส่วนหนึ่งของ UI ที่แยกจากกันไม่ได้
HTML ไม่ใช่คอนเทนต์ แต่เป็นเลย์เอาต์
ต่อให้ยึดถือการแยกส่วนความรับผิดชอบ HTML กับ CSS ก็ยังอยู่ในชั้นการนำเสนอเดียวกัน
การเชื่อว่าจะแยกสองอย่างนี้ออกจากกันได้ก็เหมือนปฏิเสธความจริง
ลองสรุปรายการจุดปรับปรุงหลัก ๆ ของ CSS ยุคหลังมานิดหน่อย
:has(...):is(...)— เมื่อก่อนต้องใช้ลูกเล่นอย่าง:not(:not(...)):where(...)— คล้าย:is(...)แต่ selector specificity เป็น 0 เลยมีประโยชน์เวลาใช้ selector ซับซ้อนLLM ส่วนใหญ่ยังไม่รู้จักฟีเจอร์นี้
แนะนำให้เพิ่มตัวอย่างไว้ใน
AGENTS.mdดู เอกสาร MDN เรื่อง Nesting Selector ได้
ใช้
&selector เพื่อให้ อ่านง่ายขึ้นและลดความซ้ำซ้อน ได้พร้อมกันtext-box: trimรู้สึกเหมือนเป็นอิสระหลังจากต้องอธิบายให้นักออกแบบฟังมา 20 ปีว่าการจัดขอบด้านบนของตัวพิมพ์ใหญ่ให้ตรงกันนั้นทำไม่ได้
@layerมากที่สุดตัวอย่างบางส่วนยังใช้วิธีเก่าที่ทำงานได้กับทุกเบราว์เซอร์ แต่แบบใหม่ใช้ได้แค่ Chrome/Edge
การใส่ตัวอย่างแบบนี้ดูไม่รับผิดชอบ เพราะเป็นการตอกย้ำความเป็น Blink monopoly
จริง ๆ ควรชี้ไปที่ การไม่ทำตามมาตรฐานของ Mozilla มากกว่า
ควรเลิกยึดองค์ประกอบต่าง ๆ ไว้ที่ขอบจอได้แล้ว
บางเว็บมี องค์ประกอบคงที่กินพื้นที่เกินครึ่งจอ
ปล่อยให้คอนเทนต์เลื่อนไปตามสโครลจะเป็นธรรมชาติกว่า
น่าขันตรงที่เว็บนั้นกลับ บังคับใช้โหมดมืด และไม่ใช้
prefers-color-schemeเวลามองตัวอย่าง CSS แปลกใหม่แล้วคิดว่า “เจ๋งดี!” ก็ต้องมาเจอข้อจำกัดในโลกจริง เพราะรองรับแค่ราว 40~50%
แม้จะเป็นผลจากอิทธิพลที่มากเกินไปของ Chromium ก็ตาม แต่โดยรวมก็ยังเป็นเรื่องดี
ดู Interop 2025
ผู้พัฒนาเบราว์เซอร์กำลังใส่ฟีเจอร์ไว้ล่วงหน้าเพื่อให้เกิด การรองรับอย่างกว้างขวาง ในอนาคต
สับสนที่ตัวอย่างซึ่งขึ้นว่า Firefox ใช้ไม่ได้ กลับทำงานได้ดีในเดโมจริง
เลยสงสัยว่าใช้ polyfill อยู่หรือเปล่า
ตัวเลขเปอร์เซ็นต์สีเขียวมุมซ้ายล่างหมายถึงสัดส่วนผู้ใช้เบราว์เซอร์ที่รองรับฟีเจอร์นั้น
หลายครั้งต่ำกว่าครึ่งด้วยซ้ำ
สุดท้ายเลยใกล้เคียงกับ “latest Chrome CSS” มากกว่า “modern CSS”
เช่น
sibling-index()ยังใช้ใน Firefox ไม่ได้ แต่กลับถูกระบุว่า “widely available”ทุกวันนี้งงว่าควรใช้ Tailwind, CSS-in-JS, Sass/SCSS หรือ Vanilla CSS ดี
ใช้อะไรที่เหมาะกับทีมก็พอ
ถ้า Tailwind เหมาะก็ใช้ ถ้าเป็นโปรเจกต์ส่วนตัวจะใช้อินไลน์ CSS ก็ได้ ถ้าคุ้นกับ Sass ก็ใช้ต่อไป
ถ้าอยากทุ่มไปกับ CSS สมัยใหม่เต็มที่ นั่นก็เป็นทางเลือกที่ยอดเยี่ยม
ทำเว็บมานานเกินไปจนแม้แต่ตัวอย่างที่ถูกเรียกว่า “วิธีแบบเก่า” หลายอันก็ยังเป็น ฟีเจอร์ที่ไม่เคยเห็นมาก่อน
เพิ่งเคยเห็นฟีเจอร์ปรับความสว่างของสี
เมื่อก่อนทำด้วย Sass กับ Compass แต่การ ดูแลรักษา toolchain นั้นยุ่งยาก
ตอนนี้มีใน CSS เองแล้วเลยสะดวกขึ้นมาก