ToolDeck

CSS Formatter

Форматирование и приведение CSS в порядок с правильными отступами

Попробовать пример

Входной CSS

Отформатированный CSS

Работает локально · Безопасно вставлять секреты
Отформатированный CSS появится здесь…
Также попробуйте:CSS MinifierCSS Unit Converter

Что такое форматирование CSS?

Форматирование CSS — это процесс добавления единообразных отступов, переносов строк и пробелов в таблицы стилей (Cascading Style Sheets), чтобы код был удобен для чтения людьми. Браузеры полностью игнорируют пробельные символы в CSS. Минифицированная однострочная запись и аккуратно оформленная таблица стилей дают идентичный результат отображения. Разница — в читаемости: отформатированный CSS позволяет быстро просматривать селекторы, замечать пропущенные точки с запятой и понимать каскад с первого взгляда.

CSS-форматтер (иногда называемый CSS-бьютифайером или pretty-printer) берёт сжатый или непоследовательно оформленный CSS и переписывает его с единообразными отступами, по одному объявлению на строку и согласованным расположением фигурных скобок. Это операция, обратная минификации, — также называемая «приведением в порядок» или «красивой печатью». В то время как минификация удаляет пробельные символы для уменьшения размера файла в продакшене, форматирование восстанавливает структуру для разработки, код-ревью и сопровождения кодовой базы.

Спецификация CSS (W3C CSS Syntax Module Level 3) определяет грамматику таблиц стилей, но ничего не говорит о соглашениях по пробельным символам. Правила форматирования — это командное решение: табуляция или пробелы, отступ 2 или 4 пробела, стиль скобок, пустые строки между наборами правил. Форматтер последовательно применяет выбранное соглашение ко всем файлам. Большинство команд закрепляют свой выбор в файле .prettierrc или .editorconfig.

Зачем использовать этот CSS Formatter?

Вставьте любой CSS и получите правильно отформатированный результат за миллисекунды. Никаких плагинов для редактора, конфигурационных файлов и учётных записей.

Мгновенное форматирование
Результат обновляется по мере ввода или вставки. Отформатированный CSS появляется сразу, без ожидания шага сборки или выполнения CLI-команды.
🔒
Обработка без передачи данных
Всё форматирование выполняется локально в браузере на JavaScript. Ваш CSS никогда не покидает устройство и не отправляется ни на какой сервер.
🎨
Настраиваемые отступы
Выберите отступ в 2 пробела, 4 пробела или табуляцию в соответствии со стилем кода вашего проекта. Результат готов к вставке непосредственно в кодовую базу.
📋
Без регистрации
Откройте страницу, вставьте CSS, скопируйте результат. Никакой регистрации, ограничений по количеству запросов и закрытых функций. Инструмент полностью доступен при каждом посещении.

Сценарии использования CSS Formatter

Frontend-разработчик
Когда вы получаете минифицированный CSS из библиотеки поставщика или CDN, отформатируйте его, чтобы просмотреть селекторы и понять, что он переопределяет в ваших собственных таблицах стилей.
Backend-инженер
Страницы с серверным рендерингом нередко встраивают критический CSS как единую строку. Форматирование этого CSS упрощает проверку того, какие стили включены в начальный HTML-ответ.
DevOps и CI-пайплайны
Обеспечивайте единообразное форматирование CSS в пул-реквестах, сравнивая вывод форматтера с зафиксированными файлами. Непоследовательные пробельные символы создают шумные диффы, которые скрывают реальные изменения.
QA и отладка
При отладке визуального бага отформатируйте вычисленный CSS из DevTools, чтобы быстро определить, какие свойства применены и в каком порядке специфичности.
Миграция данных
Системы управления контентом и конструкторы писем хранят CSS в полях базы данных, нередко без пробельных символов. Форматирование извлечённого CSS помогает проверить его перед повторным импортом.
Изучение CSS
Студенты, изучающие CSS, могут вставлять примеры из учебников или ответов Stack Overflow и видеть их в единообразном оформлении, что облегчает понимание вложенности и каскада.

Справочник по порядку CSS-свойств

Большинство CSS-форматтеров не переупорядочивают свойства. Однако многие руководства по стилю рекомендуют группировать связанные свойства вместе. В таблице ниже показано распространённое соглашение о группировке, используемое такими инструментами, как плагин order для Stylelint и CSScomb:

ГруппаПримеры свойствНазначение
Position & Layoutposition, display, float, clearDefines the element's rendering mode
Box Modelwidth, height, margin, paddingControls dimensions and spacing
Typographyfont-size, line-height, colorText styling properties
Visualbackground, border, box-shadowDecorative properties
Animationtransition, animation, transformMotion and transform effects
Misccursor, overflow, z-indexBehavioral and stacking properties

Эта группировка является соглашением, а не требованием CSS. Браузеры применяют объявления на основе специфичности и порядка источника, независимо от положения свойства внутри блока правил. Форматтер сосредоточен на пробельных символах и отступах; переупорядочивание свойств — это отдельная задача линтинга, решаемая такими инструментами, как Stylelint.

Форматирование CSS vs. минификация CSS

Форматирование и минификация — обратные операции, применяемые на разных этапах разработки:

CSS Formatter (этот инструмент)
Добавляет отступы, переносы строк и пробелы, чтобы CSS стал читаемым. Используется в процессе разработки и код-ревью. Увеличивает размер файла, но никак не влияет на отображение в браузере. Результат предназначен для людей.
CSS Minifier
Удаляет все лишние пробельные символы, комментарии и избыточный синтаксис для уменьшения размера файла. Используется при сборке для продакшена. Результат предназначен для браузеров и CDN, а не для чтения.

Примеры кода

Как программно форматировать CSS на разных языках и в разных средах:

JavaScript (Prettier API)
import * as prettier from 'prettier'

const ugly = 'body{margin:0;padding:0}h1{font-size:2rem;color:#333}'

const formatted = await prettier.format(ugly, {
  parser: 'css',
  tabWidth: 2,
  singleQuote: true,
})
// → "body {\n  margin: 0;\n  padding: 0;\n}\n\nh1 {\n  font-size: 2rem;\n  color: #333;\n}\n"
Python (cssbeautifier)
import cssbeautifier

ugly = 'body{margin:0;padding:0}h1{font-size:2rem;color:#333}'

opts = cssbeautifier.default_options()
opts.indent_size = 2

formatted = cssbeautifier.beautify(ugly, opts)
# → "body {\n  margin: 0;\n  padding: 0;\n}\n\nh1 {\n  font-size: 2rem;\n  color: #333;\n}"
CLI (Prettier)
# 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
PHP (sabberworm/php-css-parser)
<?php
// composer require sabberworm/php-css-parser
require 'vendor/autoload.php';

use Sabberworm\CSS\Parser;
use Sabberworm\CSS\OutputFormat;

$input = 'body{margin:0;padding:0}h1{font-size:2rem;color:#333}';

$document = (new Parser($input))->parse();
echo $document->render(OutputFormat::createPretty());
// → body {
//     margin: 0;
//     padding: 0;
//   }
//   h1 {
//     font-size: 2rem;
//     color: #333;
//   }

Часто задаваемые вопросы

В чём разница между CSS-форматтером и CSS-линтером?
CSS-форматтер изменяет только пробельные символы: отступы, переносы строк, пробелы вокруг двоеточий и скобок. Он не изменяет сами CSS-объявления. CSS-линтер (например, Stylelint) анализирует код на ошибки, нежелательные практики и нарушения стиля и может предлагать или автоматически исправлять проблемы, выходящие за рамки пробельных символов. Команды, как правило, используют оба инструмента: форматтер — для единообразных отступов, линтер — для выявления ошибок.
Меняет ли форматирование CSS то, как он отображается в браузере?
Нет. Браузеры разбирают CSS в соответствии с W3C CSS Syntax Module, который рассматривает все пробельные символы (пробелы, табуляции, переносы строк) как эквивалентные разделители токенов. Добавление или удаление пробельных символов между объявлениями, селекторами или значениями никак не влияет на вычисленные стили. Единственное исключение — пробелы внутри строковых значений, например content: "hello world", которые форматтер сохраняет.
Сколько пробелов использовать для отступов в CSS?
Два наиболее распространённых соглашения — 2 пробела и 4 пробела. Руководство по стилю Google и стандартные настройки Prettier используют 2 пробела. Стандарты написания CSS для WordPress предусматривают табуляцию. Разницы в производительности нет. Выберите то, что уже принято в вашей команде или совпадает с отступами в JavaScript/HTML-коде, и придерживайтесь этого.
Можно ли форматировать SCSS, LESS или другие препроцессоры CSS этим инструментом?
Этот инструмент форматирует стандартный синтаксис CSS. SCSS и LESS разделяют большую часть синтаксиса CSS, поэтому простой код препроцессора нередко форматируется корректно. Однако конструкции, специфичные для SCSS, такие как @mixin, @include и вложенные наборы правил, могут обрабатываться не так, как ожидается. Для SCSS используйте Prettier с парсером SCSS или расширение sass-formatter.
Одно и то же ли CSS-форматтер и CSS-бьютифайер?
Да. Термины CSS-форматтер, CSS-бьютифайер и CSS pretty-printer обозначают одну и ту же операцию: добавление единообразных пробельных символов в CSS-код. Разные инструменты используют разные названия, но результат одинаков: CSS с отступами, по одному объявлению на строку.
Почему в отформатированном CSS другое количество строк, чем в исходном?
Минифицированный или сжатый CSS нередко помещает несколько объявлений на одну строку или опускает переносы строк между наборами правил. Форматтер добавляет перенос строки после каждого объявления и пустую строку между наборами правил, что увеличивает общее количество строк. Сам CSS-контент (селекторы, свойства, значения) при этом не изменяется.
Что лучше хранить в системе контроля версий — отформатированный или минифицированный CSS?
Храните отформатированный CSS. Диффы в системах контроля версий основаны на строках, поэтому отформатированный CSS с одним объявлением на строку даёт чистые, понятные диффы. Минифицированный CSS порождает однострочные диффы, которые невозможно проверить. Запускайте минификацию как шаг сборки, а не как формат исходного кода. Инструменты PostCSS, cssnano или плагин CSS вашего бандлера автоматически выполняют минификацию для продакшена.