Come posso trovare le regole CSS non utilizzate / non applicate in un foglio di stile?


18

Ho un enorme file CSS e un file HTML. Vorrei scoprire quali regole non vengono utilizzate durante la visualizzazione di un file HTML. Ci sono strumenti per questo?

Il file CSS si è evoluto nel corso di pochi anni e da quello che so nessuno nessuno ha mai rimosso nulla da esso - le persone hanno appena scritto nuove regole imperative ancora e ancora.

EDIT: è stato suggerito di utilizzare i selettori Dust-Me o lo strumento di performance delle pagine Web di Chrome. Entrambi funzionano a livello di selettori e non di singole regole. Ho molti casi in cui una regola all'interno di un selettore viene sempre ignorata - e questo è ciò di cui mi voglio sbarazzare. Per esempio:

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

Tutto il testo nel mio HTML è all'interno di un elemento wrapper, quindi non è mai bianco. bodyL 'imbottitura funziona sempre, quindi ovviamente bodynon è possibile rimuovere l'intero selettore. E vorrei sbarazzarmi anche di regole così inutili.

EDIT: E un altro caso di regola inutile: quando duplica uno esistente senza cambiare nulla:

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

Mi sbarazzerei felicemente del secondo margin-left... di nuovo mi sembra che quegli strumenti non trovino queste cose.

EDIT: apprezzo tutte le risposte, ma purtroppo gli strumenti che hai suggerito non hanno dato suggerimenti utili. Ho valutato le tue risposte, ma aspetterò uno strumento che fa le cose in modo più granulare, come sopra specificato.

Grazie,


Potresti considerare la mancanza di uno strumento adeguato come un'opportunità: poiché capisci ciò di cui hai bisogno, potresti essere la persona migliore per creare tale strumento. È possibile ispezionare il codice degli strumenti esistenti per idee e tecniche, quindi creare qualcosa che funzioni a livello di regola anziché di selettore. La tua possibilità di fama e fortuna! ... beh, forse solo fama;)
iconoclasta

@Brandon: questa domanda ha appena colpito il segno della "domanda notevole" ... quindi potresti avere ragione :-)
liori

Risposte:


8

Dust Me Selecters Estensione di Firefox

Negli Strumenti per sviluppatori di Chrome puoi utilizzare lo strumento Prestazioni della pagina Web per trovare regole CSS inutilizzate.


Ottimo, lo controllerò subito!
liori,

Questi strumenti possono rimuovere solo selettori inutili. Ho chiarito la mia domanda.
liori,

2
@liori: non penso che ciò sia affidabile. Nel tuo esempio di margine, la seconda regola di margine può sembrare superflua ma ha una specificità più elevata e potrebbe ignorare una regola successiva. Ad esempio, se una classe .abcha un margine diverso, <a class="abc">cambierei il suo margine al passaggio del mouse penso. Ora probabilmente non è quello che intendi, ma certamente potrebbe essere, e non puoi rimuovere ciecamente quella regola duplicata.
Sconcertato Goat

@DisgruntledGoat: sto pensando a un caso di un mondo chiuso: se non è specificato, non esiste. Quindi se non ci sono definizioni per a.abc, o non ci sono <a class="abc"/> da nessuna parte nell'HTML, non esiste. Comunque, ho già finito il compito che mi ha spinto a porre questa domanda qui, e ho finito applicando molta euristica. Ho provato gli strumenti per sviluppatori di Chrome, ma non mi hanno aiutato molto.
liori,

5

Puoi anche dare un'occhiata a Unused-CSS.com Questo strumento esplorerà le tue pagine e costruirà un file CSS ottimizzato senza i selettori inutilizzati


4

Mi è sempre piaciuto l' utilizzo dei CSS . È un plugin per Firebug e ti consente di scansionare la pagina e vedere quali regole CSS non sono applicate. Scansionerà automaticamente e funzionerà su più pagine.


2

Controlla uncss, è un modulo nodo.

"UnCSS è uno strumento che rimuove i CSS inutilizzati dai tuoi fogli di stile. Funziona su più file e supporta CSS con iniezione JavaScript."

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

Modifica dopo il commento:

Penso che tu stia chiedendo due cose diverse:

  1. Rimuovi automaticamente le regole inutilizzate, questo è ciò che uncss può fare per te. Ho anche creato questo strumento, ciao ciao CSS, ma non è automatico come chiedi: https://www.npmjs.com/package/css-byebye

  2. Ottimizza il foglio di stile in cui le regole potrebbero essere unite / semplificate.

In tal caso, consiglierei due strumenti che fanno questo tipo di cose:

Fanno più o meno le stesse ottimizzazioni, a volte l'una ha risultati migliori dell'altra, a volte è l'opposto. Dipende dal tuo foglio di stile. (potresti correre uno dopo l'altro anche: P)

Li uso come parte di un processo di compilazione con grugnito. Quindi non è davvero una cosa visiva come chiedi ma fanno il tipo di ottimizzazioni che desideri.

Ecco cosa dicono per CSSO (informazioni complete qui: https://en.bem.info/tools/optimizers/csso/ )

Ottimizzazioni strutturali:

  • Unione di blocchi con selettori identici
  • Unione di blocchi con proprietà identiche
  • Rimozione di proprietà ignorate
  • Rimozione delle proprietà stenografiche sostituite
  • Rimozione di selettori ripetuti
  • Fusione parziale di blocchi
  • Suddivisione parziale dei blocchi
  • Rimozione di regole vuote e regole
  • Minimizzazione delle proprietà di margine e riempimento

A giudicare dalla pagina principale, funziona a livello di selettore. Può effettivamente rimuovere le regole nei due casi di esempio che ho citato nella domanda?
liori,

Ho modificato la mia risposta. Ho provato il tuo primo esempio con l'interfaccia web CSSO: risultato: body {color: #fff; imbottitura: 10em} h1, p, ul {color: # 000}
Kev

1

@Giovanni: ottimo strumento, grazie per il link

@liori: Consiglio vivamente anche il plug-in Firefox Web Developer che ti consente di visualizzare i nomi / le proprietà degli elementi, modificare il CSS in tempo reale (non scrive nel tuo file CSS) in modo da poter modificare e testare le modifiche CSS senza il FFF di dover salvare e caricare i tuoi css ogni 3 secondi. + carica più funzionalità.

C'è anche un simpatico ispettore DOM che si collega a Firebug che si collega ed è ottimo per risolvere Javascript.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.