قالببندی CSS فرآیند افزودن تورفتگی، شکست خط، و فاصلهگذاری یکنواخت به استایلشیتها است تا کد برای انسان خوانا باشد. مرورگرها فضای خالی در CSS را کاملاً نادیده میگیرند. یک CSS فشردهشده در یک خط و یک استایلشیت تورفتگیدار، رندر یکسانی تولید میکنند. تفاوت در خوانایی است: CSS قالببندیشده به شما امکان میدهد سلکتورها را اسکن کنید، سمیکالنهای گمشده را بیابید، و آبشار را در یک نگاه درک کنید.
یک قالببند CSS (که گاهی زیباساز CSS یا pretty-printer هم نامیده میشود) CSS فشرده یا ناهماهنگ را میگیرد و آن را با تورفتگی یکنواخت، یک اعلان در هر خط، و قرارگیری یکسان آکولادها بازنویسی میکند. این عملیات معکوس کوچکسازی است که به آن زیباسازی یا pretty-printing نیز میگویند. در حالی که کوچکسازی فضای خالی را برای کاهش حجم فایل در محیط تولید حذف میکند، قالببندی ساختار را برای توسعه، بازبینی کد، و نگهداری کدبیس بازمیگرداند.
مشخصات CSS (W3C CSS Syntax Module Level 3) دستور زبان استایلشیتها را تعریف میکند، اما هیچچیزی درباره قراردادهای فضای خالی نمیگوید. قوانین قالببندی یک تصمیم تیمی است: تب در مقابل فاصله، تورفتگی ۲ یا ۴ فاصلهای، سبک آکولاد، خطوط خالی بین مجموعهقوانین. یک قالببند هر قراردادی را که انتخاب کنید بهطور یکنواخت در تمام فایلها اعمال میکند. اکثر تیمها انتخاب خود را در فایل .prettierrc یا .editorconfig مستند میکنند.
چرا از این قالببند CSS استفاده کنیم؟
هر CSS دلخواهی را پیست کنید و در میلیثانیه خروجی با تورفتگی مناسب دریافت کنید. نیازی به نصب افزونه ویرایشگر، نوشتن فایلهای پیکربندی، یا ایجاد حساب کاربری نیست.
⚡
قالببندی فوری
خروجی همزمان با تایپ یا پیست کردن بهروزرسانی میشود. CSS قالببندیشده را بلافاصله دریافت میکنید، بدون اینکه منتظر یک مرحله build یا اجرای یک دستور CLI بمانید.
🔒
پردازش کاملاً محلی
تمام قالببندی بهصورت محلی در مرورگر شما با JavaScript اجرا میشود. CSS شما هرگز دستگاه شما را ترک نمیکند و هرگز به هیچ سروری ارسال نمیشود.
🎨
تورفتگی قابل تنظیم
بین تورفتگی ۲ فاصلهای، ۴ فاصلهای، یا تب انتخاب کنید تا با سبک کد پروژهتان هماهنگ باشد. خروجی آماده است تا مستقیماً در کدبیس شما پیست شود.
📋
بدون نیاز به ورود
صفحه را باز کنید، CSS خود را پیست کنید، نتیجه را کپی کنید. بدون ثبتنام، بدون محدودیت نرخ، بدون قفل ویژگی. ابزار کامل در هر بار بازدید در دسترس است.
موارد استفاده قالببند CSS
توسعه فرانتاند
هنگامی که CSS فشردهشده از یک کتابخانه ارائهدهنده یا CDN دریافت میکنید، آن را قالببندی کنید تا سلکتورها را بخوانید و بفهمید چه چیزی را در استایلشیتهای خودتان بازنویسی میکند.
مهندسی بکاند
صفحات server-rendered اغلب CSS حیاتی را بهصورت یک خط تعبیه میکنند. قالببندی آن CSS، بررسی اینکه چه استایلهایی در payload HTML اولیه وجود دارند را آسانتر میکند.
DevOps و پایپلاینهای CI
با مقایسه خروجی قالببند با فایلهای کامیتشده، قالببندی یکنواخت CSS را در pull requestها اعمال کنید. فضای خالی ناهماهنگ، diffهای پرسروصدایی ایجاد میکند که تغییرات واقعی را پنهان میکند.
QA و بررسی باگ
هنگام اشکالزدایی یک باگ بصری، CSS محاسبهشده از DevTools را قالببندی کنید تا سریعاً تشخیص دهید کدام ویژگیها اعمال شده و به چه ترتیب ویژگیمندی.
مهاجرت داده
سیستمهای مدیریت محتوا و سازندگان ایمیل CSS را در فیلدهای پایگاه داده ذخیره میکنند که اغلب از فضای خالی خالی شدهاند. قالببندی CSS استخراجشده، تأیید آن را قبل از وارد کردن مجدد آسان میکند.
یادگیری CSS
دانشجویانی که CSS یاد میگیرند میتوانند مثالهای آموزشها یا پاسخهای Stack Overflow را پیست کنند و آنها را با قالببندی یکنواخت ببینند، که دنبال کردن تودرتویی و آبشار را آسانتر میکند.
مرجع ترتیب ویژگیهای CSS
اکثر قالببندهای CSS ویژگیها را مرتب نمیکنند. اما بسیاری از راهنماهای سبک توصیه میکنند ویژگیهای مرتبط را با هم گروهبندی کنید. جدول زیر یک قرارداد رایج گروهبندی را که توسط ابزارهایی مانند افزونه order از Stylelint و CSScomb استفاده میشود نشان میدهد:
گروه
ویژگیهای نمونه
هدف
Position & Layout
position, display, float, clear
Defines the element's rendering mode
Box Model
width, height, margin, padding
Controls dimensions and spacing
Typography
font-size, line-height, color
Text styling properties
Visual
background, border, box-shadow
Decorative properties
Animation
transition, animation, transform
Motion and transform effects
Misc
cursor, overflow, z-index
Behavioral and stacking properties
این گروهبندی یک قرارداد است، نه یک الزام CSS. مرورگرها اعلانها را بر اساس ویژگیمندی و ترتیب منبع اعمال میکنند، بدون توجه به موقعیت ویژگی در داخل یک بلوک قانون. یک قالببند بر فضای خالی و تورفتگی تمرکز دارد؛ مرتبسازی مجدد ویژگیها یک دغدغه لینتینگ جداگانه است که توسط ابزارهایی مانند Stylelint مدیریت میشود.
قالببندی CSS در مقابل کوچکسازی CSS
قالببندی و کوچکسازی عملیات معکوس هستند که در مراحل مختلف توسعه اعمال میشوند:
قالببند CSS (این ابزار)
تورفتگی، شکست خط و فاصلهگذاری اضافه میکند تا CSS خوانا شود. در طول توسعه و بازبینی کد استفاده میشود. حجم فایل را افزایش میدهد اما هیچ تأثیری بر رندر مرورگر ندارد. خروجی برای انسانها است.
کوچکساز CSS
تمام فضای خالی غیرضروری، کامنتها و نحو اضافی را برای کاهش حجم فایل حذف میکند. برای buildهای محیط تولید استفاده میشود. خروجی برای مرورگرها و CDNها است، نه برای خواندن.
مثالهای کد
نحوه قالببندی CSS بهصورت برنامهنویسی در زبانها و محیطهای مختلف:
# Format a single file in place
npx prettier --write styles.css
# Format all CSS files in a directory
npx prettier --write "src/**/*.css"
# Check formatting without modifying files
npx prettier --check "src/**/*.css"
# Pipe minified CSS through stdin
echo "body{margin:0;padding:0}" | npx prettier --parser css
یک قالببند CSS فقط فضای خالی را تغییر میدهد: تورفتگی، شکست خط، فاصلهگذاری دور دونقطه و آکولادها. اعلانهای واقعی CSS شما را تغییر نمیدهد. یک لینتر CSS (مانند Stylelint) کد شما را برای خطاها، شیوههای بد و نقض سبک تحلیل میکند و ممکن است مشکلاتی فراتر از فضای خالی را پیشنهاد یا بهطور خودکار اصلاح کند. تیمها معمولاً از هر دو استفاده میکنند: قالببند برای فاصلهگذاری یکنواخت، لینتر برای تشخیص اشتباهات.
آیا قالببندی CSS نحوه رندر آن در مرورگر را تغییر میدهد؟
خیر. مرورگرها CSS را بر اساس W3C CSS Syntax Module تجزیه میکنند که تمام فضای خالی (فاصله، تب، خطوط جدید) را بهعنوان جداکنندههای توکن معادل در نظر میگیرد. افزودن یا حذف فضای خالی بین اعلانها، سلکتورها یا مقادیر هیچ تأثیری بر استایلهای محاسبهشده ندارد. تنها استثنا فضای خالی درون مقادیر رشتهای مانند content: "سلام دنیا" است که قالببند آن را حفظ میکند.
چند فاصله باید برای تورفتگی CSS استفاده کنم؟
دو قرارداد رایجتر ۲ فاصله و ۴ فاصله هستند. راهنمای سبک Google و پیشفرض Prettier هر دو از ۲ فاصله استفاده میکنند. استانداردهای کد CSS وردپرس از تب استفاده میکنند. هیچ تفاوت عملکردی وجود ندارد. آنچه تیم شما از قبل استفاده میکند یا آنچه در کد JavaScript/HTML موجود شما استفاده شده را انتخاب کنید و ثابت بمانید.
آیا میتوانم SCSS، LESS یا پیشپردازندههای دیگر CSS را با این ابزار قالببندی کنم؟
این ابزار نحو استاندارد CSS را قالببندی میکند. SCSS و LESS بیشتر نحو CSS را به اشتراک میگذارند، بنابراین کد ساده پیشپردازنده اغلب بهدرستی قالببندی میشود. با این حال، سازههای خاص SCSS مانند @mixin، @include و مجموعهقوانین تودرتو ممکن است طبق انتظار مدیریت نشوند. برای SCSS از Prettier با تجزیهکننده SCSS یا افزونه sass-formatter استفاده کنید.
آیا قالببندی CSS همان زیباسازی CSS است؟
بله. اصطلاحات قالببند CSS، زیباساز CSS و pretty-printer CSS همه به همان عملیات اشاره دارند: افزودن فضای خالی یکنواخت به کد CSS. ابزارهای مختلف از نامهای متفاوتی استفاده میکنند، اما خروجی یکسان است: CSS با تورفتگی و خوانا با یک اعلان در هر خط.
چرا CSS قالببندیشده من تعداد خطوط متفاوتی نسبت به اصلی دارد؟
CSS فشرده یا کوچکشده اغلب چندین اعلان را در یک خط جا میدهد یا شکست خط بین مجموعهقوانین را حذف میکند. قالببند بعد از هر اعلان یک شکست خط و بین مجموعهقوانین یک خط خالی اضافه میکند که تعداد خطوط را افزایش میدهد. محتوای واقعی CSS (سلکتورها، ویژگیها، مقادیر) تغییر نمیکند.
آیا باید CSS قالببندیشده یا کوچکشده را در کنترل نسخه کامیت کنم؟
CSS قالببندیشده را کامیت کنید. diffهای کنترل نسخه خطمحور هستند، بنابراین CSS قالببندیشده با یک اعلان در هر خط، diffهای تمیز و قابل بازبینی تولید میکند. CSS کوچکشده diffهای تکخطی ایجاد میکند که بازبینی آنها غیرممکن است. کوچکسازی را بهعنوان یک مرحله build اجرا کنید، نه بهعنوان یک قالب منبع. ابزارهایی مانند PostCSS، cssnano یا افزونه CSS بستهساز شما کوچکسازی محیط تولید را بهطور خودکار مدیریت میکنند.