ToolActToolAct

Инструмент форматирования CSS

Ввод CSS
Результат
Строк: 1Символов: 0Байт: 0
Строк: 1Символов: 0

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

CSS Formatter упорядочивает stylesheets в единообразную и читаемую структуру. Селекторы, declarations, media queries, keyframes, переменные и output препроцессоров легче проверять, чем в минифицированном или неровно отформатированном коде. Это помогает при отладке, ревью, поддержке design system, обучении и понимании чужих стилей. Форматирование не меняет автоматически cascade, specificity, inheritance и совместимость браузеров. Небольшое правило может сильно влиять на интерфейс, если загружается поздно или использует сильный селектор. Для production нужно проверять responsive states, visual regression, lint, build output и контекст компонента. Перед релизом стоит открыть страницу и проверить реальные состояния интерфейса. Для production-данных или кодовой базы результат все равно нужно проверить parser, тестами или правилами проекта.

Как использовать

Как использовать

  1. Вставьте или введите CSS-код в левое поле ввода
  2. Выберите размер отступа и стиль форматирования
  3. Нажмите «Format» для форматирования кода или «Minify» для уменьшения размера
  4. Просматривайте результат справа с подсветкой синтаксиса
  5. Нажмите «Copy», чтобы скопировать в буфер обмена

Параметры форматирования

РазвёрнутыйКаждое свойство на отдельной строке, подходит для разработки и отладки
КомпактныйСелектор и свойства на одной строке, подходит для быстрого просмотра

Горячие клавиши

  • Ctrl + EnterФорматировать
  • Ctrl + Shift + CСкопировать результат

Советы по форматированию

  • Форматирование изменяет пробелы и расположение, но не поведение селекторов. Тестируйте таблицу стилей после правки сложного каскада или media-query кода.
  • Минифицируйте только когда результат предназначен для доставки или встраивания. Сохраняйте читаемую копию исходного кода для проверки и сопровождения.

Применение

Превращение сжатого CSS в читаемые правилаВставьте CSS из бандла, поля CMS, инструментов разработчика браузера или шаблона письма и отформатируйте с отступами в 2 или 4 пробела или табуляции, чтобы селекторы, объявления и вложенные медиа-блоки стали удобны для проверки. После разворачивания также становится виден порядок правил, что помогает при поиске каскадного переопределения или медиа-запроса, срабатывающего позже ожидаемого.
Минификация отредактированного CSS для быстрой передачиПосле изменения фрагмента переключитесь в режим сжатия для удаления комментариев и лишних пробелов, затем скопируйте или скачайте результат как CSS-файл для быстрой вставки в шаблон письма, Codepen-прототип или статическую страницу. Сначала отформатируйте читаемую версию, чтобы было видно, какие селекторы изменились, а сжатый результат проверьте stylelint или проектным линтером, поскольку минификация не проверяет специфичность селекторов, дублирующие свойства или непреднамеренные каскадные переопределения.
Используйте для фрагментов, а не для полноценного CSS-парсингаФорматировщик — это лёгкая браузерная реализация, сохраняющая кавычные строки, содержимое url() и комментарии внутри объявлений, но не заменяющая полноценный PostCSS-пайплайн для вендорного синтаксиса, source maps, линтинга или production-сборки. Скомпилируйте Sass, Less или CSS Modules в обычный CSS, затем пропустите результат через этот инструмент для снимков проверки; для production-проверки полагайтесь на stylelint, PurgeCSS или CSS-аудит.
Нормализация вендорных префиксов и output препроцессоровОтформатируйте скомпилированный output из Sass, Less или PostCSS, чтобы префиксы -webkit-, -moz- и -ms- выстроились в линию, а порядок медиа-запросов в каскаде стал виден сразу при ревью кода. Развёрнутый блок также упрощает обнаружение вложенных правил @supports или @container при аудите приоритета каскада.
Выбор ширины отступа под стиль проектаЗаранее выберите 2 пробела, 4 пробела или табуляцию, чтобы отформатированный фрагмент вставлялся в репозиторий без дополнительного прохода линтера — это особенно важно при вставке в общий файл дизайн-системы. Два пробела обычно сохраняют читаемость глубокой вложенности, а табуляция позволяет каждому участнику выбрать свой визуальный размер.

Технический принцип

Форматирование CSS — это задача токенизации и форматированного вывода, а не полного разбора. Полноценный парсер CSS (CSS Syntax Module Level 3, рекомендация W3C) тяжелее, чем необходимо форматировщику: он строит AST с правилами стилей, at-правилами, объявлениями и значениями компонентов, а также разрешает граничные случаи разбора (незавершённые строки, непарные скобки, свойства с вендорными префиксами). Эта страница использует более лёгкий токенизатор, который проходит по потоку символов, распознаёт те же классы токенов (идентификатор, at-ключевое слово, хэш, строка, повреждённая строка, число, размерность, процент, url, функция, пунктуация, комментарий) и выдаёт их как плоский список, затем форматировщик собирает токены с выбранным отступом, стилем скобок и правилами пробелов. Две структурные единицы в CSS — это блоки правил (селектор { объявления }) и блоки at-правил (@media, @supports, @container, @keyframes оборачивают одно или несколько правил). Форматировщик проходит по потоку токенов и отслеживает глубину скобок: { увеличивает глубину (и следует новая строка + отступ), } уменьшает глубину (и отступ сжимается до соответствия парной {). Селекторы выводятся дословно — форматировщик не разбирает их, поскольку разбор селектора вроде .foo > .bar:hover:not(.baz) — это отдельная задача (CSS Selectors Level 4). Селекторы сохраняются побайтово, только с нормализацией пробелов (множественные пробелы сжимаются в один, завершающие пробелы удаляются), чтобы минифицированный .a,.b,.c преобразовывался в .a, .b, .c. Объявления форматируются с выбранным стилем: 'expanded' (каждое свойство на отдельной строке, наиболее читаемый), 'compact' (одно правило на строку, несколько объявлений компактно, наиболее распространён в production CSS) или 'compressed' (минифицированный, без пробелов, минимально возможный вывод). Двоеточие после имени свойства всегда сопровождается одним пробелом; значение выводится дословно, за исключением нескольких нормализаций (убираются завершающие нули из 0.500 в .5, единицы из 0px в 0 — классические приёмы минификации CSS). Минификация — это обратное направление: удаление комментариев, сжатие пробелов внутри и между объявлениями, удаление завершающей точки с запятой после последнего объявления в блоке (допустимо по CSS 2.1 §4.1.7), объединение соседних блоков правил с одинаковым селектором и медиа-контекстом, а также нормализация цветовых значений (#ffffff -> #fff, rgb(255,255,255) -> #fff, когда возможно). Современные минификаторы (cssnano, lightningcss, clean-css) также выполняют структурные оптимизации: объединение длинных свойств в сокращённые (margin-top: 1px; margin-right: 1px; margin-bottom: 1px; margin-left: 1px; -> margin: 1px;), удаление дублирующихся объявлений внутри правила и удаление правил, не совпадающих ни с одним элементом (div:has-no-children { color: red; } при удалении мёртвого кода). Для минифицированного вывода страница применяет стандартные преобразования; для читаемого вывода — выбранный отступ и стиль скобок. Модуль CSS Nesting (CSSWG, черновик 2023, Baseline 2024) вводит нативную вложенность: .a { color: red; & .b { color: blue; } } теперь валидный CSS в современных браузерах (Chrome 112+, Firefox 117+, Safari 16.5+). До 2024 года вложенность требовала перезаписи препроцессором (Sass & или Less & для цепочки селекторов). Страница обрабатывает оба варианта: вложенный CSS препроцессора форматируется как SCSS/Less (с сохранением &), а нативный вложенный CSS (без необходимости &) форматируется обходом блока правил. Другие at-правила, обрабатываемые страницей: @keyframes и @counter-style принимают тело из объявлений, а не вложенных блоков правил, поэтому форматируются иначе (объявления внутри at-правила, без вложенных скобок). @media, @supports, @container, @layer принимают тело из блоков правил. @import, @charset, @namespace — только верхнего уровня и выводятся на отдельной строке. @property (зарегистрированные пользовательские свойства) принимает блок объявлений. @font-face — это одиночный блок правил со сложным объявлением без селектора. Страница обрабатывает каждое правило по форме его тела, определённой спецификацией, а не по имени. Самая частая ловушка форматирования — нарушение содержимого внутри строковых литералов: content: "hello world";, font-family: "Arial Black", sans-serif;, background: url("image.png") — форматировщик не должен сжимать пробелы внутри строки, разделять URL по / и трогать текст комментария внутри /* ... */. Токенизатор, корректно отслеживающий состояние строк и комментариев — это разница между форматировщиком, сохраняющим содержимое пользователя, и тем, что его искажает. Токенизатор страницы написан вручную и достаточно компактен для визуальной проверки; production-форматировщики используют postcss или lightningcss, которые несут те же обязательства во внутренних лексерах.

  • Лексический анализ (CSS Syntax Level 3): проход по потоку символов, выдача токенов ident / at-keyword / hash / string / number / dimension / percentage / url / function / punctuation / comment. Строки и комментарии имеют состояние — неправильный токенизатор ломает content: "hello world";.
  • Две структурные единицы: блоки правил (селектор { объявления }) и блоки at-правил (@media, @supports, @container, @layer оборачивают блоки правил). Форматировщик отслеживает глубину скобок и делает отступ при каждом { на новый уровень; парная } уменьшает уровень.
  • Селекторы выводятся дословно с нормализацией пробелов: .a,.b,.c -> .a, .b, .c. Форматировщик не разбирает селекторы (CSS Selectors Level 4 — отдельная задача) — он только очищает пробелы и запятые.
  • Стили вывода: 'expanded' (одно объявление на строку, наиболее читаемый), 'compact' (одно правило на строку, распространён в production), 'compressed' (без пробелов, минифицированный). Двоеточие + пробел после имени свойства — единственное универсальное правило форматирования.
  • Минификация: удаление комментариев, сжатие пробелов, удаление завершающей ;, объединение правил с одинаковым селектором, нормализация #ffffff -> #fff, 0.500 -> .5, 0px -> 0. Структурные объединения: длинные -> сокращённые (margin-top: 1px; ... margin-left: 1px; -> margin: 1px;).
  • CSS Nesting (CSSWG 2023, Baseline 2024): .a { & .b { ... } } теперь нативный CSS в Chrome 112+, Firefox 117+, Safari 16.5+. Вложенность препроцессоров до 2024 (Sass &, Less) по-прежнему валидна; страница форматирует оба варианта обходом структуры блоков правил.
  • Тела at-правил: @keyframes и @counter-style принимают объявления; @media / @supports / @container / @layer принимают блоки правил; @import / @charset / @namespace — инструкции верхнего уровня; @property и @font-face принимают блоки объявлений. Страница обрабатывает каждое по форме тела, определённой спецификацией, а не по имени.
  • Граница безопасности: строковые литералы (content, имена шрифтов, URL) и текст комментариев не затрагиваются ни одним преобразованием. Побайтовая точность — критерий корректности CSS-форматировщика — сломайте строку content, и пользователь заметит это немедленно.

Примеры

Форматирование минифицированного CSS

Вход:  .btn{color:red;background:#fff;padding:8px 16px;border-radius:4px}
Выход:
.btn {
  color: red;
  background: #fff;
  padding: 8px 16px;
  border-radius: 4px;
}

Развёртывание вложенных правил

Вход:  .card{padding:16px}.card h2{margin:0 0 8px}.card p{color:#666}
Выход:
.card {
  padding: 16px;
}
.card h2 {
  margin: 0 0 8px;
}
.card p {
  color: #666;
}

Форматирование медиа-запросов

Вход:  @media(max-width:768px){.nav{display:none}.menu{width:100%}}
Выход:
@media (max-width: 768px) {
  .nav {
    display: none;
  }
  .menu {
    width: 100%;
  }
}

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

Что делает форматтер CSS?

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

Будет ли он также минифицировать CSS?

Да, если есть переключатель «минифицировать» или «сжать». Минификация удаляет комментарии и пробелы, сокращает hex-цвета (#ffffff → #fff) и убирает завершающую точку с запятой у последнего объявления в правиле. Обратное направление (beautify) восстанавливает читаемость.

Почему он не исправил мой невалидный CSS?

Это форматтер, а не валидатор. Несбалансированные скобки, отсутствующие точки с запятой и нераспознанные свойства проходят как есть. Используйте CSS-линтер (Stylelint) или загрузите CSS на панели инструментов разработчика браузера, чтобы увидеть синтаксические ошибки.

Поддерживает ли он современный CSS (вложенность, container queries, кастомные свойства)?

Большинство сборок используют CSS-парсер, понимающий актуальный синтаксис, включая @container, @supports, кастомные свойства (--var), вложенность и @layer. Если парсер устаревший, новый синтаксис может форматироваться неаккуратно — вставьте свой CSS и проверьте результат перед использованием.

Сохранятся ли мои комментарии?

Да. Блочные комментарии /* ... */ форматтер сохраняет. Некоторые минификаторы по умолчанию удаляют комментарии — отключите эту опцию, если они нужны. Однострочные комментарии // не являются стандартом CSS и могут быть удалены (они существуют в SCSS, но не в CSS).

Загружается ли CSS куда-либо?

Нет. Форматирование происходит в вашем браузере с помощью JavaScript-парсера/принтера CSS. Вставленный CSS никуда не передаётся.

Можно ли настроить отступ?

Да — обычно 2 или 4 пробела или табуляции. Выбирайте то, что соответствует существующему стилю вашего проекта. Смешанные отступы в исходнике нормализуются к выбранному значению.

Похожие инструменты

Инструмент форматирования HTML

Онлайн-инструмент для форматирования HTML с подсветкой синтаксиса и сжатием. Одним нажатием упорядочите беспорядочный HTML код.

Инструмент форматирования JavaScript

Онлайн-инструмент для форматирования JavaScript с подсветкой синтаксиса, сжатием и проверкой. Одним нажатием упорядочите JS код.

Инструмент форматирования JSON

Онлайн-инструмент для форматирования JSON с подсветкой синтаксиса, обнаружением ошибок и сжатием. Одним нажатием форматируйте JSON данные, быстро находите ошибки формата.

Инструмент форматирования XML

Онлайн-инструмент для форматирования XML с автоматическим отступом, валидацией синтаксиса и сжатием. Настраиваемый отступ, быстрое обнаружение ошибок формата XML.

Выбор цвета

Онлайн-инструмент для выбора цвета с конвертацией между HEX, RGB, HSL форматами. Создание палитр, получение цветов для веб-дизайна.

Генератор градиентов

Бесплатный онлайн-генератор CSS-градиентов: создавайте линейные и радиальные фоны, визуально подбирайте цвета и копируйте готовый CSS-код всего в один клик.