Як я можу знайти невикористані / не застосовувані правила CSS в таблиці стилів?


18

У мене величезний CSS-файл та HTML-файл. Я хотів би дізнатися, які правила не використовуються під час відображення HTML-файлу. Чи є для цього інструменти?

Файл CSS розвивався протягом декількох років, і, наскільки я знаю, ніхто з нього ніколи нічого не видаляв - люди просто знову і знову писали нові важливі правила.

РЕДАКТУВАННЯ: Було запропоновано використовувати селектори Dust-Me або інструмент для роботи веб-сторінок Chrome. Але вони обидва працюють на рівні селекторів, а не на окремих правилах. У мене дуже багато випадків, коли правило, яке знаходиться всередині селектора, завжди перекрито - і саме цього я переважно хочу позбутися. Наприклад:

body { color: white; padding: 10em; }
h1 { color: black; }
p { color: black; }
...
ul { color: black; }

Весь текст у моєму HTML міститься в якомусь елементі обгортки, тому він ніколи не є білим. bodyНакладка завжди працює, тому, звичайно, bodyне можна видалити весь селектор. І я хотів би позбутися і таких марних правил.

EDIT: І ще один випадок марного правила: коли він дублює існуючий, не змінюючи нічого:

a       { margin-left: 5px; color: blue; }
a:hover { margin-left: 5px; color: red; }

Я б із задоволенням позбувся другого margin-left... знову мені здається, що ці інструменти не знаходять таких речей.

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

Дякую,


Ви можете скористатися відсутністю будь-якого відповідного інструменту як можливість: оскільки ви розумієте, що вам потрібно, ви можете бути найкращою людиною для створення такого інструменту. Ви можете перевірити код існуючих інструментів щодо ідей та прийомів, а потім побудувати щось, що працює на рівні правила, а не селектора. Ваш шанс на славу і багатство! ... ну, може, просто слава;)
іконоборство

@Brandon: це питання просто потрапило на позначку "помітне питання" ... тож ви можете мати рацію :-)
liori

Відповіді:


8

Розширення Firefox Dust Me Selecters

У Інструментах для розробників Chrome ви можете скористатись інструментом продуктивності веб-сторінки, щоб знайти невикористані правила CSS.


Чудово, я зараз перевірю!
liori

Ці інструменти можуть видаляти лише марні селектори. Я уточнив своє запитання.
Ліорі

2
@liori: Я не думаю, що це надійно можливо. У вашому прикладі маргіналу друге правило маржина може здатися зайвим, але воно має більш високу специфіку і може замінити наступне правило. Наприклад, якщо клас .abcмає інший запас, <a class="abc">я думаю , що він міняє його поле на наведення курсора. Зараз, напевно, це не те, що ви маєте намір, але це, безумовно, могло бути, і ви не можете сліпо видалити це дублікат правила.
НевдоволенийGoat

@DisgruntledGoat: Я думаю про випадок закритого світу: якщо він не вказаний, він не існує. Тож якщо для a.abcHTML немає визначень або немає <a class="abc"/> ніде в HTML, він не існує. У будь-якому випадку я вже закінчив завдання, яке запропонувало мені задати це питання тут, і я закінчився з застосуванням багато евристики. Я спробував Інструменти для розробників Chrome, але вони мені не дуже допомогли.
liori

5

Ви також можете подивитися на Unused-CSS.com Цей інструмент вивчить ваші сторінки та створить оптимізовані файли CSS без невикористаних селекторів


4

Мені завжди подобалося використання CSS . Це плагін для Firebug, і ми дамо вам просканувати сторінку та побачити, які правила CSS не застосовуються. Він навіть автоматично сканує і працюватиме на декількох сторінках.


2

Перевірте uncss, це модуль вузла.

"UnCSS - це інструмент, який видаляє невикористаний CSS з ваших таблиць стилів. Він працює в декількох файлах і підтримує Javascript, введений Javascript."

https://www.npmjs.com/package/uncss

Редагувати після коментаря:

Я думаю, ви просите про дві різні речі:

  1. Видаліть невикористані правила автоматично, це те, що uncss може зробити для вас. Я також зробив цей інструмент, CSS byebye, але це не автоматично, як ви запитаєте: https://www.npmjs.com/package/css-byebye

  2. Оптимізуйте таблицю стилів, де правила можуть бути об'єднані / спрощені.

У такому випадку я рекомендую два інструменти, які роблять такі речі:

Вони роблять більш-менш однакові оптимізації, іноді один має кращі результати, ніж інший, а іноді - навпаки. Це залежить від вашої таблиці стилів. (Ви також можете бігти один за одним: P)

Я використовую їх як частину процесу збирання з грунтом. Тож насправді це не візуальна річ, як ви запитуєте, але вони роблять оптимізацію, яку ви хочете.

Ось що вони кажуть для CSSO (повна інформація тут: https://en.bem.info/tools/optimizers/csso/ )

Структурні оптимізації:

  • Об'єднання блоків з однаковими селекторами
  • Об'єднання блоків з однаковими властивостями
  • Видалення перекритих властивостей
  • Видалення перекритих властивостей скорочень
  • Видалення повторюваних селекторів
  • Часткове злиття блоків
  • Часткове розщеплення блоків
  • Видалення порожнього набору правил і правила
  • Мінімізація властивостей маржа та прокладки

Судячи з головної сторінки, вона працює на селекторному рівні. Чи може насправді видалити правила у двох прикладних випадках, про які я згадував у запитанні?
liori

Я відредагував свою відповідь. Я перевірив ваш перший приклад за допомогою веб-інтерфейсу CSSO: результат: body {color: #fff; padding: 10em} h1, p, ul {color: # 000}
Кев

1

@John: відмінний інструмент, дякую за посилання

@liori: Я також настійно рекомендую плагін для веб-розробників Firefox, який дозволяє відображати назви елементів / властивості, редагувати css в режимі реального часу (не записує у ваш файл css), щоб ви могли редагувати та перевіряти зміни css без faff збереження та завантаження свого CSS за 3 секунди. + завантажує більше функцій.

Також є дуже приємний інспектор DOM, який підключається до Firebug, який також підключається і чудово підходить для сортування Javascript.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.