ToolDeck

เครื่องมือบีบอัด CSS

บีบอัด CSS โดยลบช่องว่างและคอมเมนต์

ลองตัวอย่าง

ข้อมูล CSS

CSS ที่บีบอัดแล้ว

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ
CSS ที่บีบอัดแล้วจะปรากฏที่นี่…

การบีบอัด CSS คืออะไร?

การบีบอัด CSS คือกระบวนการลบอักขระที่ไม่จำเป็นทั้งหมดออกจาก stylesheet โดยไม่เปลี่ยนพฤติกรรม ซึ่งหมายถึงการตัดช่องว่าง การขึ้นบรรทัดใหม่ คอมเมนต์ และ syntax ที่ซ้ำซ้อน เช่น เซมิโคลอนท้ายและเครื่องหมายคำพูดที่ไม่จำเป็นออก เบราว์เซอร์แยกวิเคราะห์ CSS ที่บีบอัดแล้วเหมือนกับต้นฉบับทุกประการ W3C CSS Syntax Module กำหนดไวยากรณ์ไว้ว่าช่องว่างระหว่าง token เป็นเพียงตัวเลือก ยกเว้นที่คั่นระหว่าง identifier การบีบอัดใช้ประโยชน์จากนี้โดยลดทุกอย่างลงเหลือเฉพาะอักขระที่จำเป็น

เครื่องมือบีบอัด CSS ออนไลน์รับ stylesheet ที่จัดรูปแบบแล้วและสร้างเวอร์ชันที่กะทัดรัดซึ่งเหมาะสมสำหรับการส่งผ่านเครือข่าย โดยทั่วไปประหยัดได้ 15% ถึง 40% ขึ้นอยู่กับปริมาณช่องว่างและคอมเมนต์ในซอร์สโค้ด สำหรับ stylesheet ขนาด 50 KB นั่นหมายถึงลดขนาดได้ 7–20 KB ในทุกการโหลดหน้าเว็บ เมื่อใช้ร่วมกับการบีบอัด gzip หรือ Brotli บนเซิร์ฟเวอร์ การบีบอัด CSS จะลดขนาดการส่งสุดท้ายได้อีก เนื่องจากผลลัพธ์ที่บีบอัดแล้วของ CSS ที่บีบอัดแล้วมีขนาดเล็กกว่าการบีบอัดต้นฉบับที่จัดรูปแบบ

การบีบอัดเป็นขั้นตอนมาตรฐานใน build pipeline ของ front-end เครื่องมืออย่าง cssnano, clean-css และ esbuild รัน minification เป็นส่วนหนึ่งของกระบวนการ build แต่ในระหว่างการพัฒนา คุณมักต้องบีบอัด snippet เดี่ยวเพื่อทดสอบ แทรก CSS สำคัญแบบ inline หรือตรวจสอบว่า stylesheet หดตัวเท่าไรก่อนเพิ่มใน bundle config นี่คือจุดที่เครื่องมือบีบอัด CSS บนเบราว์เซอร์มีประโยชน์: วาง CSS รับผลลัพธ์ที่บีบอัดแล้ว คัดลอก และดำเนินการต่อ

Before · css
After · css
/* Main navigation styles */
.nav {
  display: flex;
  align-items: center;
  padding: 1rem 2rem;
  background-color: #1e293b;
}

/* Links inside nav */
.nav a {
  color: #e2e8f0;
  text-decoration: none;
  margin-right: 1.5rem;
  transition: color 0.2s ease;
}

.nav a:hover {
  color: #818cf8;
}
.nav{display:flex;align-items:center;padding:1rem 2rem;background-color:#1e293b}.nav a{color:#e2e8f0;text-decoration:none;margin-right:1.5rem;transition:color .2s ease}.nav a:hover{color:#818cf8}

ทำไมต้องใช้เครื่องมือบีบอัด CSS นี้?

วาง CSS ใดๆ แล้วรับผลลัพธ์ที่บีบอัดในเสี้ยววินาที ไม่ต้องตั้งค่า build tool ไม่ต้องใช้คำสั่ง CLI ไม่ต้องสร้างบัญชี

บีบอัดทันที
ผลลัพธ์อัปเดตขณะที่คุณพิมพ์หรือวาง คุณเห็นผลลัพธ์ที่บีบอัดและปริมาณไบต์ที่ประหยัดได้ทันที โดยไม่ต้องรอขั้นตอน build
🔒
ประมวลผลโดยให้ความเป็นส่วนตัวเป็นหลัก
การบีบอัดทั้งหมดทำงานในเบราว์เซอร์ของคุณโดยใช้ JavaScript CSS ของคุณไม่เคยออกจากอุปกรณ์และไม่เคยถูกส่งไปยังเซิร์ฟเวอร์ใดๆ
📦
รายงานขนาดที่แม่นยำ
ดูขนาดต้นฉบับ ขนาดที่บีบอัดแล้ว และเปอร์เซ็นต์ที่ลดลงแบบเคียงข้างกัน มีประโยชน์สำหรับประเมินผลด้านประสิทธิภาพก่อนตัดสินใจเปลี่ยน build pipeline
📋
ไม่ต้องเข้าสู่ระบบ
เปิดหน้าเว็บ วาง CSS คัดลอกผลลัพธ์ ไม่ต้องสมัครสมาชิก ไม่มีการจำกัดอัตราการใช้งาน ไม่มีฟีเจอร์ที่ต้องปลดล็อก เครื่องมือเต็มรูปแบบพร้อมใช้งานทุกครั้ง

กรณีการใช้งานเครื่องมือบีบอัด CSS

การเพิ่มประสิทธิภาพ Frontend
บีบอัด CSS สำคัญก่อนแทรกไว้ใน head element ของ HTML ขนาด inline CSS ที่เล็กลงหมายถึง First Contentful Paint ที่เร็วขึ้น โดยเฉพาะบนเครือข่ายมือถือ
การสร้าง Email Template บน Backend
Email client ไม่รองรับ stylesheet ภายนอกและมีการจำกัดขนาดอย่างเข้มงวด บีบอัด CSS inline เพื่อให้ HTML ของ email อยู่ใต้เกณฑ์การตัด (102 KB สำหรับ Gmail)
DevOps และการตรวจสอบ Build
เปรียบเทียบผลลัพธ์ที่บีบอัดของ build tool กับเครื่องมือนี้เพื่อยืนยันว่า cssnano หรือ clean-css ถูกตั้งค่าถูกต้องและให้ผลลัพธ์ที่เหมาะสม
การกำหนดงบประมาณขนาดสำหรับ QA
วาง vendor stylesheet เพื่อตรวจสอบขนาดที่บีบอัดแล้วเทียบกับงบประมาณด้านประสิทธิภาพ พิจารณาว่าต้องการ tree-shaking หรือการเปลี่ยนทดแทนก่อนเพิ่มในโปรเจกต์
Data Engineering และ Web Scraping
เมื่อดึง CSS จากหน้าเว็บที่ crawl แล้ว ให้บีบอัดเพื่อทำให้ช่องว่างระหว่างซอร์สเป็นมาตรฐานเดียวกันก่อนนำไปเปรียบเทียบหรือจัดเก็บ
การเรียนรู้การเพิ่มประสิทธิภาพ CSS
ผู้เรียนสามารถวาง CSS และดูว่า minifier ลบอักขระใดออกบ้าง การเปรียบเทียบ input และ output สอนให้รู้ว่าส่วนใดของ CSS syntax มีความหมายต่อเบราว์เซอร์และส่วนใดเป็นเพียงเครื่องสำอาง

เทคนิคการบีบอัด CSS

เครื่องมือบีบอัด CSS ใช้การแปลงหลายอย่างเพื่อลดขนาดไฟล์ แต่ละอย่างกำหนดเป้าหมายความซ้ำซ้อนประเภทต่างๆ ในซอร์สโค้ด ตารางด้านล่างแสดงเทคนิคหลักและปริมาณที่ประหยัดได้โดยทั่วไปบน stylesheet ที่จัดรูปแบบ:

เทคนิคสิ่งที่ทำปริมาณที่ประหยัดโดยทั่วไป
Whitespace removalStrips spaces, tabs, and newlines between tokens15–25%
Comment strippingRemoves /* ... */ block comments5–15%
Zero shortening0px → 0, 0.5 → .51–3%
Shorthand colors#ffffff → #fff, #aabbcc → #abc1–2%
Semicolon removalDrops the last semicolon before }<1%
Quote removalfont-family: "Arial" → font-family: Arial<1%

เปอร์เซ็นต์ที่ประหยัดได้แตกต่างกันตาม input ไฟล์ที่มีคอมเมนต์มากได้ประโยชน์จากการลบคอมเมนต์มากกว่า ส่วนไฟล์ที่บีบอัดแล้วได้ประโยชน์น้อยกว่า ผลลัพธ์ที่น่าเชื่อถือที่สุดมาจากการลบช่องว่างและการเพิ่มประสิทธิภาพ shorthand minifier ขั้นสูงอย่าง cssnano ยังรวม selector ที่ซ้ำกัน ยุบ property แบบ longhand เป็น shorthand (margin-top + margin-right + margin-bottom + margin-left เป็น margin) และลบ declaration ที่ถูกแทนที่ด้วย

การบีบอัด CSS กับ gzip Compression

การบีบอัด CSS และการบีบไฟล์เป็นสิ่งที่เสริมกัน ไม่ใช่ทดแทนกัน ทำงานในชั้นต่างกันและซ้อนทับกัน:

การบีบอัด CSS (เครื่องมือนี้)
ทำงานในระดับ CSS syntax ลบช่องว่าง คอมเมนต์ และเขียน shorthand value ใหม่ รันครั้งเดียวตอน build ผลลัพธ์เป็น CSS ที่ถูกต้องซึ่งเบราว์เซอร์แยกวิเคราะห์โดยตรง โดยทั่วไปลดขนาดได้ 15–40% ของขนาดไฟล์ต้นฉบับ
การบีบอัดด้วย gzip / Brotli
ทำงานในระดับไบต์โดยใช้อัลกอริทึมการบีบอัดทั่วไป ใช้โดย web server ในทุก response (หรือบีบอัดล่วงหน้าตอน deploy) ทำงานกับทุกประเภทไฟล์ โดยทั่วไปลดขนาดได้ 60–80% ของขนาดที่บีบอัดแล้ว การใช้ทั้งสองร่วมกันทำให้ขนาดการส่งเล็กที่สุด

ตัวอย่างโค้ด

วิธีบีบอัด CSS ด้วยโปรแกรมในภาษาและสภาพแวดล้อมต่างๆ:

JavaScript (cssnano + PostCSS)
import postcss from 'postcss'
import cssnano from 'cssnano'

const input = `
.nav {
  display: flex;
  padding: 0px 1rem;
  color: #ffffff;
  /* TODO: update color */
}
`

const result = await postcss([cssnano]).process(input, { from: undefined })
console.log(result.css)
// → ".nav{display:flex;padding:0 1rem;color:#fff}"
Python (csscompressor)
import csscompressor

css = """
.nav {
  display: flex;
  padding: 0px 1rem;
  color: #ffffff;
  /* navigation styles */
}
"""

minified = csscompressor.compress(css)
print(minified)
# → ".nav{display:flex;padding:0 1rem;color:#fff}"
Go (tdewolff/minify)
package main

import (
	"fmt"
	"github.com/tdewolff/minify/v2"
	"github.com/tdewolff/minify/v2/css"
)

func main() {
	m := minify.New()
	m.AddFunc("text/css", css.Minify)

	input := ".nav { display: flex; padding: 0px 1rem; color: #ffffff; }"
	output, _ := m.String("text/css", input)
	fmt.Println(output)
	// → ".nav{display:flex;padding:0 1rem;color:#fff}"
}
CLI (cssnano / clean-css)
# Using cssnano via PostCSS CLI
npx postcss styles.css --use cssnano -o styles.min.css

# Using clean-css CLI
npx clean-css-cli styles.css -o styles.min.css

# Quick one-liner with Node.js
node -e "const CleanCSS=require('clean-css');console.log(new CleanCSS().minify('body { margin: 0px; }').styles)"
# → "body{margin:0}"

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

ความแตกต่างระหว่างการบีบอัด CSS และการบีบไฟล์ CSS คืออะไร?
การบีบอัด CSS เขียน source code ใหม่เพื่อลบอักขระที่ไม่จำเป็น (ช่องว่าง คอมเมนต์ syntax ที่ซ้ำซ้อน) ในขณะที่คงพฤติกรรมเดิม การบีบไฟล์ (gzip, Brotli) เข้ารหัสไบต์ของไฟล์ให้เป็นรูปแบบไบนารีที่กะทัดรัดกว่าในชั้น transport แนวปฏิบัติที่ดีที่สุดคือใช้ทั้งสอง: บีบอัด CSS ก่อน แล้วให้เซิร์ฟเวอร์บีบไฟล์ผลลัพธ์
การบีบอัด CSS ทำให้บางอย่างพังไหม?
การบีบอัดมาตรฐานคงพฤติกรรม CSS ไว้ ช่องว่างภายใน string value (เช่น content property) จะถูกรักษาไว้โดย minifier หลักทั้งหมด อย่างไรก็ตาม การเพิ่มประสิทธิภาพเชิงรุกอย่างการรวม selector หรือการเรียงลำดับ property ใหม่อาจเปลี่ยน specificity หรือลำดับการแทนที่ หากคุณใช้ preset เริ่มต้นของ cssnano การแปลงที่มีความเสี่ยงเหล่านี้จะถูกปิดใช้งาน เครื่องมือนี้ทำเฉพาะการบีบอัดที่ปลอดภัย: การลบช่องว่าง การลบคอมเมนต์ และการเพิ่มประสิทธิภาพ shorthand
CSS จะมีขนาดเล็กลงเท่าไรหลังการบีบอัด?
โดยทั่วไปลดขนาดได้ 15–40% ของขนาดไฟล์ที่จัดรูปแบบต้นฉบับ ไฟล์ที่มีคอมเมนต์มากและช่องว่างกว้างขวางจะเห็นการลดขนาดมากกว่า CSS ที่กระชับโดยไม่มีคอมเมนต์อาจหดตัวเพียง 10–15% ปริมาณที่ประหยัดได้แน่นอนขึ้นอยู่กับสไตล์การเขียนโค้ด ความหนาแน่นของคอมเมนต์ และการใช้ longhand property ที่สามารถยุบเป็น shorthand ได้
ควรบีบอัด CSS ด้วยตนเองหรือใช้ build tool?
สำหรับ production build ให้ใช้ build tool เสมอ (PostCSS พร้อม cssnano, esbuild หรือ css-minimizer-webpack-plugin ของ webpack) การบีบอัดอัตโนมัติรันทุก build และครอบคลุมทุกไฟล์ เครื่องมือบนเบราว์เซอร์มีประโยชน์สำหรับงานเดี่ยว: การแทรก CSS snippet สำคัญแบบ inline การตรวจสอบขนาดที่บีบอัดของ vendor stylesheet หรือการบีบอัด prototype อย่างรวดเร็วก่อนแชร์
สามารถบีบอัด SCSS หรือ LESS ด้วยเครื่องมือนี้ได้ไหม?
เครื่องมือนี้บีบอัด CSS มาตรฐาน SCSS และ LESS เป็นภาษา preprocessor ที่ compile เป็น CSS compile SCSS หรือ LESS ของคุณเป็น CSS ก่อน (โดยใช้ sass หรือ lessc) แล้ววางผลลัพธ์ที่ compile แล้วที่นี่ การบีบอัด SCSS syntax ดิบอาจลบคอมเมนต์ที่ควบคุมพฤติกรรมการ compile เช่น //! preserve comments หรือ @use annotations
CSS ที่บีบอัดแล้วดีบักยากกว่าไหม?
ใช่ CSS ที่บีบอัดแล้วเป็นบรรทัดเดียวไม่มีการจัดรูปแบบ ทำให้อ่านยากใน DevTools วิธีแก้มาตรฐานคือ source map build tool อย่าง PostCSS และ esbuild สร้างไฟล์ .map ที่ให้ DevTools ของเบราว์เซอร์แสดง source ต้นฉบับที่จัดรูปแบบแล้ว ในขณะที่เบราว์เซอร์โหลดเวอร์ชันที่บีบอัด สำหรับการดีบัก production โดยไม่มี source map ให้วาง CSS ที่บีบอัดแล้วลงใน CSS formatter เพื่อคืนความอ่านได้
ความแตกต่างระหว่าง CSS minifier และ CSS compressor คืออะไร?
ในการใช้งานทั่วไป คำทั้งสองใช้แทนกันได้ ทั้งคู่หมายถึงการลบอักขระที่ไม่จำเป็นออกจาก CSS เพื่อลดขนาดไฟล์ เครื่องมือบางอย่างใช้คำว่า 'compressor' ในชื่อ (เช่น csscompressor สำหรับ Python) แต่ทำ minification มาตรฐาน คำว่า 'compression' ยังหมายถึงการเข้ารหัส gzip/Brotli ซึ่งเป็นกระบวนการระดับเซิร์ฟเวอร์แยกต่างหาก หากเห็น 'CSS compressor' แทบเสมอหมายถึง minification ไม่ใช่ gzip