CSS Minifier

ไฟล์ CSS ที่ย่อขนาดแล้วโหลดเร็วขึ้นอย่างเห็นได้ชัดเมื่อเทียบกับไฟล์ที่จัดรูปสวยงาม และความต่างนี้สะสมเพิ่มขึ้นทุกครั้งที่โหลดหน้า เครื่องมือนี้ตัดช่องว่าง คอมเมนต์ และอัฒภาคท้ายออก โดยไม่เปลี่ยน cascade หรือผลของกฎใด ๆ ผลลัพธ์เป็น CSS ที่ถูกต้องเสมอ ซึ่งเบราว์เซอร์แปลผลเหมือนต้นฉบับทุกประการ

วิธีย่อขนาด CSS

  1. 1

    วาง CSS

    CSS ใดก็ได้: เขียนด้วยมือ, คอมไพล์จาก Sass, บล็อกสไตล์แบบอินไลน์

  2. 2

    ย่อขนาด

    กด "Minify CSS" เพื่อตัดคอมเมนต์ ช่องว่าง และอัฒภาคท้ายในรอบเดียว

  3. 3

    ดูการประหยัด

    จำนวนไบต์ที่ประหยัดได้แสดงอยู่ข้างผลลัพธ์ที่บีบอัดแล้ว

  4. 4

    คัดลอกผลลัพธ์

    คัดลอก CSS ที่ย่อแล้วไปวางในบันเดิลโปรดักชัน หรือบันทึกเป็น `.min.css`

สิ่งที่ minifier ทำ

การแปลง (ไม่เปลี่ยนพฤติกรรมเลย):

  • ตัดคอมเมนต์ทั้งหมด รวมถึงบล็อก /*! ของ license
  • ตัดช่องว่างที่ไม่จำเป็น (ระหว่าง selector, การประกาศ, วงเล็บปีกกา)
  • ลบอัฒภาคท้ายก่อนวงเล็บปีกกาปิด
  • ยุบกฎหลายบรรทัดให้เป็นบรรทัดเดียว

ทำแค่นี้เอง จึงทำให้ผลลัพธ์ทำงานเหมือนต้นฉบับทุกประการ: selector, พร็อพเพอร์ตี และค่าทุกอย่างยังคงตามที่คุณเขียน

การประหยัดทั่วไป

ต้นฉบับ ขนาดเดิม ขนาดหลังย่อ ประหยัด
CSS เขียนมือจัดรูปสวยงาม 20 KB 12 KB 40%
คอมไพล์จาก Sass โหมด dev 45 KB 25 KB 44%
ย่อขนาดแล้ว + gzip 10 KB 10 KB 0%

นอกเหนือจากการย่อขนาด การบีบอัด gzip ที่เซิร์ฟเวอร์ยังประหยัดเพิ่มอีก 60-80% เพราะ CSS ซ้ำซ้อนสูง ทั้งสองวิธีซ้อนทับกันได้ ทำทั้งคู่เสมอ

สิ่งที่การย่อขนาดไม่ทำ

  • ลบ CSS ที่ไม่ได้ใช้ นั่นเป็นเรื่องของ tree-shaking / PurgeCSS ซึ่งต้องวิเคราะห์ HTML หรือคอมโพเนนต์ของคุณ
  • ย่อสีฐานสิบหก ยุบหน่วยศูนย์ หรือรวมการประกาศ การแปลงเชิงรุกเหล่านั้นเป็นงานของ cssnano, esbuild หรือ Lightning CSS ไม่ใช่เครื่องมือนี้
  • รวม selector ที่ซ้ำให้เป็นอันเดียว เสี่ยงเพราะลำดับในต้นฉบับมีผลต่อ cascade minifier บางตัวพยายามทำ แต่ส่วนใหญ่ข้ามไป
  • เปลี่ยนชื่อคลาส นั่นเป็น CSS-in-JS หรือ CSS Modules ไม่ใช่การย่อขนาด
  • อินไลน์ critical CSS นั่นเป็นขั้นตอนแยกต่างหากตอน build

การคงคอมเมนต์ license

minifier จำนวนมากคงคอมเมนต์ที่ขึ้นต้นด้วย /*!, ใช้สำหรับส่วนหัว license:

/*! Bootstrap v5.3 · MIT License · https://github.com/twbs/bootstrap */

เครื่องมือนี้ตัดคอมเมนต์ทั้งหมด หาก CSS ของคุณมีส่วนหัว license ให้เพิ่มกลับหลังย่อขนาด หรือใช้ build tool ที่มีตัวเลือกคง license ไว้ เช่น cssnano หรือ esbuild

Source map

สำหรับการดีบักในโปรดักชัน build tool จะสร้าง source map ควบคู่ไปกับผลลัพธ์ที่ย่อขนาด:

styles.min.css
styles.min.css.map

DevTools อ่าน map ได้และแสดงหมายเลขบรรทัดของต้นฉบับที่จัดรูปสวยงามเมื่อคุณตรวจสอบองค์ประกอบ เครื่องมือนี้ไม่สร้าง source map

การย่อขนาด CSS ใน build pipeline

  • Vite, Webpack, Parcel: จัดการให้อัตโนมัติในการ build โปรดักชัน
  • PostCSS กับ cssnano: minifier มาตรฐานแบบเดี่ยว
  • esbuild: รวมการย่อขนาด CSS ไว้ด้วย
  • preset ของ cssnano: default สำหรับการแปลงที่ปลอดภัย, advanced สำหรับเชิงรุก (พร้อมข้อแลกเปลี่ยนบางอย่าง)

เครื่องมือนี้เหมาะกับการย่อขนาดครั้งเดียว การแก้ไขด่วน และการเรียนรู้ว่า minifier ทำอะไรจริง ๆ สำหรับ workflow โปรดักชัน ให้ใช้เครื่องมือ build เพื่อให้ต้นฉบับยังอ่านง่ายและย่อขนาดเฉพาะผลลัพธ์

เมื่อใดที่การย่อขนาดอาจทำให้ CSS เสีย

พบยากแต่เป็นไปได้:

  • selector ที่ไวต่อช่องว่าง: .foo .bar เทียบกับ .foo.bar, ช่องว่างมีผล
  • ค่า custom property ที่มีช่องว่าง: --shadow: 0 2px 4px rgba(0,0,0,0.1), จุลภาคภายใน rgba() ต้องไม่ถูกตัด
  • คอมเมนต์บล็อกที่ไม่ปิด: /* missing close กลืนทุกอย่างที่ตามมา minifier อาจทำงานผิดพลาดกับอินพุตที่ผิดรูป

วิธีแก้: รันผลลัพธ์ที่ย่อขนาดแล้วผ่าน lint/test ก่อนปล่อยใช้งานเสมอ

คำถามที่พบบ่อย

ไม่ ไฟล์ CSS ที่ย่อขนาดอย่างถูกต้องจะต่างกันที่ไบต์แต่มีความหมายเหมือนกันทุกประการ ทุก selector, พร็อพเพอร์ตี และค่าให้ผลภาพเดียวกัน หากคุณเห็นการเรนเดอร์เปลี่ยนไป แสดงว่า minifier มีบั๊ก หรืออินพุตของคุณมีไวยากรณ์ที่ไวต่อช่องว่าง

ใช่ เมื่อคุณกด “Minify CSS” CSS ที่คุณวางจะถูกส่งไปยังเซิร์ฟเวอร์ของเราเพื่อย่อขนาด แล้วส่งผลลัพธ์กลับมายังหน้า CSS จะไม่ถูกบันทึกลงฐานข้อมูลและไม่ถูกเพิ่มลงในลิงก์ของหน้า

หลัง ย่อขนาด CSS ที่คอมไพล์เสร็จซึ่งเบราว์เซอร์ได้รับจริง ผลลัพธ์จาก Sass ค่อนข้างกระชับอยู่แล้วแต่ยังมีช่องว่างและคอมเมนต์ที่การย่อขนาดจะตัดออก

พอประมาณแต่มีจริง โดยทั่วไป 5-15% เพิ่มจาก gzip การตัดช่องว่างและคอมเมนต์ยังทำให้รูปแบบของ gzip หนาแน่นขึ้นเล็กน้อย

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือตรวจสอบหมายเลขโทรศัพท์

ตรวจสอบโครงสร้างหมายเลขตามประเทศ พร้อมดูภูมิภาค ประเภท และรูปแบบ E.164 ระหว่างประเทศ ในประเทศ และ RFC 3966

เครื่องมือนี้มีให้บริการในภาษาอื่น