ToolDeck

ضاغط CSS

ضغط CSS بحذف المسافات البيضاء والتعليقات

جرب مثالاً

CSS المدخل

CSS مضغوط

يعمل محليًا · آمن للصق الأسرار
سيظهر CSS المضغوط هنا…

ما هو ضغط CSS؟

ضغط CSS هو عملية حذف جميع الأحرف غير الضرورية من ورقة الأنماط دون تغيير سلوكها. يعني ذلك إزالة المسافات البيضاء وفواصل الأسطر والتعليقات والصيغ الزائدة كالفواصل المنقوطة الزائدة عن الحاجة والاقتباسات غير الضرورية. تُحلّل المتصفحات CSS المضغوط بشكل مطابق للأصل. تُعرّف وحدة W3C CSS Syntax Module القواعد النحوية؛ والمسافات البيضاء بين الرموز اختيارية إلا حيث تُفصل بين المعرّفات. يستغل الضغط ذلك بتقليص كل شيء إلى الحد الأدنى من الأحرف المطلوبة.

يأخذ ضاغط CSS أونلاين ورقة أنماطك المنسّقة وينتج نسخة مضغوطة أصغر حجماً. تتراوح وفورات الحجم المعتادة بين 15% و40% حسب كمية المسافات البيضاء وعدد التعليقات في المصدر. بالنسبة لورقة أنماط حجمها 50 كيلوبايت، يعني ذلك إرسال 7–20 كيلوبايت أقل عبر الشبكة في كل تحميل صفحة. وعند الجمع مع ضغط gzip أو Brotli على الخادم، يُقلّل الضغط من حجم النقل النهائي أكثر لأن مخرج الضغط لـ CSS مضغوط مسبقاً أصغر من ضغط الأصل المنسّق.

الضغط خطوة معيارية في مسارات بناء الواجهة الأمامية. تُشغّل أدوات مثل cssnano وclean-css وesbuild الضغط كجزء من عملية البناء. لكنك أثناء التطوير تحتاج أحياناً لضغط مقتطف واحد للاختبار أو تضمين كتلة CSS حرجة أو التحقق من مقدار تقلص ورقة الأنماط قبل إضافتها إلى إعداد حزمة. هنا تكمن فائدة ضاغط CSS في المتصفح: الصق CSS واحصل على المخرج المضغوط وانسخه وتابع عملك.

After · css
Before · css
.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}
/* 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;
}

لماذا تستخدم هذا الضاغط؟

الصق أي CSS واحصل على مخرج مضغوط في أجزاء من الثانية. بدون إعداد أدوات البناء، وبدون أوامر CLI، وبدون الحاجة لإنشاء حساب.

ضغط فوري
يتجدّد المخرج أثناء الكتابة أو اللصق. ترى النتيجة المضغوطة ووفورات البايت فوراً دون انتظار خطوة بناء.
🔒
معالجة تحافظ على خصوصيتك
يعمل الضغط بالكامل محلياً في متصفحك باستخدام JavaScript. لا يغادر كود CSS جهازك ولا يُرفع إلى أي خادم.
📦
تقرير دقيق للحجم
اطّلع على الحجم الأصلي والحجم المضغوط ونسبة التقليص جنباً إلى جنب. مفيد لتقدير مكاسب الأداء قبل أن تُعدّل مسار البناء.
📋
بدون تسجيل دخول
افتح الصفحة والصق كود CSS وانسخ النتيجة. بدون تسجيل، وبدون حدود استخدام، وبدون قيود على الميزات. الأداة متاحة بالكامل في كل زيارة.

حالات استخدام ضاغط CSS

تحسين أداء الواجهة الأمامية
اضغط CSS الحرج قبل تضمينه في عنصر head في HTML. CSS المضمّن الأصغر يعني First Contentful Paint أسرع، خاصة على شبكات الجوال.
قوالب البريد الإلكتروني
تتجاهل برامج البريد الإلكتروني أوراق الأنماط الخارجية ولها حدود صارمة للحجم. اضغط CSS المضمّن للحفاظ على HTML للبريد الإلكتروني تحت عتبة القص (102 كيلوبايت لـ Gmail).
DevOps والتحقق من عملية البناء
قارن مخرج أداة البناء المضغوط بهذه الأداة للتحقق من أن cssnano أو clean-css مُهيَّأ بشكل صحيح ويُنتج نتائج مثلى.
ضمان الجودة وتحديد ميزانية الحجم
الصق ورقة أنماط مورّد للتحقق من حجمها المضغوط مقارنةً بميزانية الأداء. حدّد ما إذا كانت تحتاج إلى tree-shaking أو استبدال قبل إضافتها إلى المشروع.
هندسة البيانات وجمع البيانات من الويب
عند استخراج CSS من صفحات مجمّعة، اضغطه لتوحيد فروق المسافات البيضاء بين المصادر قبل المقارنة أو التخزين.
تعلّم تحسين CSS
يستطيع الطلاب لصق CSS ورؤية الأحرف التي يحذفها الضاغط بالضبط. مقارنة المدخل والمخرج تُعلّم أي أجزاء من صيغة CSS ذات معنى للمتصفحات وأيها تجميلي فقط.

تقنيات ضغط CSS

يُطبّق ضاغط CSS عدة تحويلات لتقليل حجم الملف. كل منها يستهدف نوعاً مختلفاً من التكرار في المصدر. يسرد الجدول أدناه التقنيات الرئيسية ووفوراتها المعتادة على ورقة أنماط منسّقة:

التقنيةما تفعلهالوفورات المعتادة
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%

تتفاوت نسب الوفورات حسب المدخل. الملفات ذات التعليقات الكثيرة تستفيد أكثر من حذف التعليقات، بينما تُحقق CSS المضغوطة مسبقاً وفورات أقل. الأكثر موثوقية هو حذف المسافات البيضاء وتحسين الاختصارات. تُدمج أدوات الضغط المتقدمة كـ cssnano أيضاً المحددات المكررة وتطوي الخصائص المطوّلة في اختصارات (margin-top + margin-right + margin-bottom + margin-left إلى margin) وتحذف التصريحات المُستبدَلة.

ضغط CSS مقابل ضغط Gzip

ضغط CSS وضغط الملفات متكاملان لا يُغني أحدهما عن الآخر. يعملان على طبقات مختلفة ويتراكمان فوق بعضهما:

ضغط CSS (هذه الأداة)
يعمل على مستوى صيغة CSS. يحذف المسافات البيضاء والتعليقات ويُعيد كتابة قيم الاختصار. يُشغَّل مرة واحدة عند البناء. المخرج CSS صالح تُحلّله المتصفحات مباشرة. التقليص المعتاد: 15–40% من حجم الملف الأصلي.
ضغط Gzip / Brotli
يعمل على مستوى البايت باستخدام خوارزميات ضغط عامة الأغراض. يُطبَّق من خادم الويب على كل استجابة (أو يُضغط مسبقاً عند النشر). يعمل على أي نوع ملف. التقليص المعتاد: 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 المصدر لحذف الأحرف غير الضرورية (المسافات البيضاء والتعليقات والصيغ الزائدة) مع الحفاظ على السلوك المطابق. التشفير (gzip وBrotli) يُحوّل بايتات الملف إلى صيغة ثنائية أكثر إيجازاً على مستوى طبقة النقل. الضغط يُنتج ملفات CSS أصغر على القرص؛ التشفير يُقلّل البايتات المُرسَلة عبر HTTP. الممارسة الأفضل هي تطبيق كليهما: اضغط أولاً، ثم دع الخادم يُشفّر المخرج المضغوط.
هل يُفسد ضغط CSS أي شيء؟
الضغط الاعتيادي يحافظ على سلوك CSS. المسافات البيضاء داخل قيم السلاسل (كخصائص content) تُحفظ من قبل جميع الضواغط الرئيسية. لكن التحسينات المتقدمة كدمج المحددات أو إعادة ترتيب الخصائص قد تُغيّر التحديد أو ترتيب الاستبدال. إذا استخدمت الإعداد الافتراضي لـ cssnano، فهذه التحويلات الخطرة مُعطَّلة. تُجري هذه الأداة ضغطاً آمناً فقط: حذف المسافات البيضاء وإزالة التعليقات وتحسين الاختصارات.
بكم يصغر CSS بعد الضغط؟
التقليص المعتاد هو 15–40% من حجم الملف المنسّق الأصلي. الملفات ذات التعليقات الوافرة والمسافات البيضاء السخية تصل إلى الحد الأعلى من هذا النطاق. CSS الكثيف مسبقاً المكتوب بدون تعليقات قد يتقلص بـ 10–15% فقط. تعتمد الوفورات الدقيقة على أسلوب الكود وكثافة التعليقات وما إذا كان المصدر يستخدم خصائص مطوّلة يمكن طيّها في اختصارات.
هل يجب أن أضغط CSS يدوياً أم أستخدم أداة بناء؟
لبناءات الإنتاج، استخدم دائماً أداة بناء (PostCSS مع cssnano أو esbuild أو css-minimizer-webpack-plugin الخاص بـ webpack). الضغط الآلي يعمل في كل بناء ويُعالج جميع الملفات. ضاغط CSS في المتصفح مفيد للمهام الفردية: تضمين مقتطف CSS حرج أو التحقق من الحجم المضغوط لورقة أنماط مورّد أو ضغط نموذج أولي سريع قبل مشاركته.
هل يمكنني ضغط SCSS أو LESS بهذه الأداة؟
تضغط هذه الأداة CSS القياسي. SCSS وLESS لغتا معالج مسبق تُترجمان إلى CSS. تُرجم SCSS أو LESS إلى CSS أولاً (باستخدام sass أو lessc)، ثم الصق المخرج المُترجَم هنا. ضغط صيغة SCSS الخام قد يحذف تعليقات تتحكم في سلوك الترجمة، مثل تعليقات الحفظ '//!' أو توجيهات @use.
هل CSS المضغوط أصعب في تصحيح الأخطاء؟
نعم، CSS المضغوط سطر واحد بلا تنسيق مما يجعل قراءته في DevTools صعبة. الحل الاعتيادي هو خرائط المصدر (source maps). تُنشئ أدوات البناء كـ PostCSS وesbuild ملفات .map تتيح لـ DevTools في المتصفح عرض المصدر المنسّق الأصلي بينما يُحمَّل الإصدار المضغوط. لتصحيح الأخطاء في الإنتاج بدون خرائط مصدر، الصق CSS المضغوط في منسّق CSS لاستعادة القراءة.
ما الفرق بين ضاغط CSS ومُقلِّص CSS؟
في الاستخدام الشائع المصطلحان متبادلان. كلاهما يشير إلى حذف الأحرف غير الضرورية من CSS لتقليل حجم الملف. بعض الأدوات تستخدم كلمة 'مُقلِّص' في اسمها (مثل csscompressor لـ Python) لكنها تُجري ضغطاً اعتيادياً. كلمة 'ضغط' قد تعني أيضاً ترميز gzip/Brotli وهو عملية منفصلة على مستوى الخادم. إذا رأيت 'ضاغط CSS' فهو دائماً تقريباً يعني الضغط النصي لا gzip.