Это длинный снимок, но есть ли доступный инструмент, который оптимизирует селектор CSS, удаляя ненужную специфичность?
Я нахожу, что, когда я пишу CSS, я намеренно делаю свои селекторы более конкретными, чем необходимо, чтобы избежать конфликтов и для квази-документации.
Было бы здорово, если бы существовал инструмент, который мог бы анализировать определенную группу правил, определять их "уникальность" в терминах совпадения с другими правилами, а затем удалять любую ненужную специфичность.
Я даже не могу даже представить себе, как инструмент разработчика подходит ко всем сценариям, которые это потребует, но я был взорван чужими изобретательствами в этой области раньше и решил, что стоит спросить.
Update:
Я добавил щедрость к этому вопросу, и чем больше я думаю об этом, тем больше я понимаю, насколько ценным будет Фильтр спецификаций CSS.
Например, при работе с вложенными правилами/селекторами в Sass и LESS, чрезмерная вложенность - это common и известный антипаттерн, который может легко привести к чрезмерно специфическим селекторам.
Хорошая иллюстрация этого в отличном курсе TutsPlus Поддерживаемый CSS с Sass и Compass:
body {
div.container {
p {
a {
color: purple;
}
}
}
}
Sass будет следовать этим инструкциям вложенности и вывести следующий вывод CSS, не возражая против какой-либо ненужной специфичности:
body div.container p a {
color: purple;
}
Если фильтр спецификаций сделал/существует, однако, это создало бы потенциальные преимущества для разработчиков CSS:
-
Вы можете упорядочить свои таблицы стилей как 1:1 сопоставление DOM, аналогично тому, что вы видите при изучении правил стиля в Firebug и Chrome Dev Tools. Интеллектуальный редактор /IDE может автоматически заполнять стили для элементов DOM с помощью общих стилей/классов. Разумеется, эта избыточность будет отфильтрована фильтром/оптимизатором.
-
Таблицы стилей могут иметь свою структуру, предварительно заполненную инструментом, который сканирует DOM и переводит его в селектор/правила CSS. Это означает, что разработчику нужно будет только обновить HTML; "дерево" CSS будет храниться синхронно, чтобы отразить текущее состояние DOM. Интеллектуальный редактор позволит вам перейти к определению CSS для элемента/класса для стилизации - или даже сделать свои правила стиля видимыми на отдельной панели.
В некотором смысле, это почти похоже на шаг назад - как функция, которую вы найдете в Dreamweaver или WebAssist, чтобы помочь newbs изучать CSS. Но основная идея инструмента оптимизации селектора CSS кажется неинтересной, и описанный мной тип автоматизации документооборота будет логичным следующим шагом - и катализатором будет фильтр спецификаций.
Я рассмотрел некоторые из наиболее известных редакторов CSS и веб-IDE, но не нашел ничего, предлагая этот тип функций, помимо таргетинга на один элемент и создания селектора для него.
Обновление 2: Производительность селектора CSS
В ответ на комментарий Spliff, вот две замечательные статьи о производительности селектора CSS:
-
Влияние производительности CSS-селекторов от Steve Souders
-
Эффективно рендеринг CSS от Chris Coyier
Оба согласны с тем, что микрооптимизирующий CSS не стоит усилий, но что чрезмерно квалифицированные селекторы-потомки являются "катастрофой эффективности". Я еще не тестировал себя сам, но подозреваю, что подход "DOM Mapping", который я предлагаю, приведет к удару производительности без шага оптимизации, как вручную, так и автоматически.
Вопросы, относящиеся, ссылки и инструменты:
Инструмент для просмотра спецификаций CSS