Фильтр специфичности CSS

Это долгий путь, но есть ли доступный инструмент, который оптимизирует селекторы CSS, удаляя ненужную специфичность?

Я обнаружил, что когда я пишу CSS, я намеренно делаю свои селекторы более конкретными, чем это необходимо, чтобы избежать конфликтов и для квази -документации.

Было бы здорово, если бы существовал инструмент, который мог бы анализировать заданную группу правил, определять их «уникальность» с точки зрения пересечения с другими правилами, а затем отбрасывать ненужную специфичность.

Я даже не могу представить, как разработчик инструментов подойдет ко всем сценариям, которые для этого потребуются,но я был потрясен изобретательностью других в этой области раньше и решил, что стоит спросить.

Обновление:

Я добавил награду к этому вопросу, и чем больше я об этом думаю, тем больше понимаю, насколько ценным был бы фильтр специфичности CSS .

Например, при работе с вложенными правилами/селекторами в Sass и LESS , чрезмерная вложенность является общим и колодцем -известный антипаттерн, который может легко привести к чрезмерно специфичным селекторам.

Хорошая иллюстрация этого есть в отличном курсе TutsPlus Поддерживаемый CSS с Sass и Compass :

body {
    div.container {
        p {
            a {
                color: purple;
            }
        }
    }
}

. Sass будет следовать этим инструкциям по вложению и выдаст следующий вывод CSS, не возражая против какой-либо ненужной специфики:

body div.container p a {
    color: purple;
}

Однако, если бы фильтр специфичности существовал/существует, это могло бы создать потенциальные преимущества для разработчиков CSS :

  1. . Вы можете организовать свои таблицы стилей как 1 :1 сопоставление DOM, подобное тому, что вы видите, когда изучаете правила стиля в Firebug и Chrome Dev Tools. Интеллектуальный редактор/IDE может автоматически -заполнять стили для элементов DOM общими стилями/классами. Эта избыточность затем, конечно, будет отфильтрована фильтром/оптимизатором специфичности.

  2. Структура таблиц стилей может быть предварительно -заполнена инструментом, который сканирует DOM и преобразует его в селекторы/правила CSS. Это означает, что разработчику нужно будет только обновить HTML; «дерево» CSS будет синхронизировано, чтобы отражать текущее состояние DOM. Умный редактор позволит вам перейти к определению CSS для элемента/класса для стилизации --или даже сделать его правила стиля видимыми на отдельной панели.

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

Я просмотрел некоторые из лучших -известных CSS-редакторов и веб-IDE, но не нашел ничего, что предлагало бы такую ​​функциональность, кроме нацеливания на один элемент и создания для него селектора.

Обновление 2 :Производительность селектора CSS

В ответ на комментарий Spliff вот две замечательные статьи о производительности селекторов CSS:

Оба согласны с тем, что микро -оптимизация CSS не стоит затраченных усилий, но что более -квалифицированные селекторы потомков — это «катастрофа эффективности». Я сам еще не проверял производительность, но подозреваю, что предлагаемый мной подход «отображение DOM» приведет к снижению производительности без шага оптимизации, будь то вручную или автоматически.

Похожие вопросы, ссылки и инструменты:

Точки в специфике CSS

Инструмент для просмотра специфики CSS

Инструмент для очистки CSS

Упорядочить по специфике CSS

5 главных ошибок массивного CSS

Google :Эффективные селекторы CSS

Процессор

Очистить CSS

CSS аккуратный

32
задан Community 23 May 2017 в 12:16
поделиться