2010-08-23 13 views
16

Ho bisogno di mantenere & migliorare un sito web esistente e sto affogando nella ridondanza che ho scoperto nel suo foglio di stile CSS. Data la ridondanza esistente e l'ordinamento non logico di elementi, è difficile tenere traccia e prevedere come si propagherà un cambiamento minore attraverso il sistema, o dove applicare una modifica per ottenere un certo effetto, senza perdere molto tempo a riapprendere il cambiamento File CSS e sperimentazione.Strumento "Normalizzatore" CSS?

Ho utilizzato i componenti aggiuntivi Firebug e "Web Developer" per Firefox, ma chiaramente non sono sufficienti per me. Ho bisogno di uno strumento che possa dirmi dove sono presenti "sovrascritture" ridondanti e forse suggerire un migliore schema a cascata.

In altre parole, aiutarmi a generare il file CSS più breve che fornisce la stessa identica funzionalità visiva che ho adesso.

Per chiarire ulteriormente, non sto cercando uno strumento che sostituisca "# 000000" con "# 000", "0.5em" con ".5em", "bianco" con "#FFF", ecc. (Questo indirizza la ridondanza "numero di caratteri", ma non affronta la ridondanza "logica a cascata"). Sto cercando uno strumento che possa dirmi, ad esempio, che un attributo "font-size: 10px" di un elemento figlio è ridondante perché è già ereditato dal suo genitore.

Una funzione più avanzata: l'attributo "colore: # 000000" di una classe o di un ID è ridondante perché non viene utilizzato in nessuno dei file HTML/PHP sul sito Web.

C'è uno strumento che esegue questo tipo di "normalizzazione" automaticamente?

+2

davvero quello che state cercando è un compilatore CSS con l'ottimizzazione e la capacità di importazione. Mi chiedo se ci sia qualcosa di simile in giro? Sembra un problema interessante da risolvere. – gtrak

risposta

2

Per trovare duplicato/inutilizzato inutili CSS/sulla base di markup, è possibile provare , o Dust-Me Selectors (come @Aaron D menzionato), o CSS Crunch. Gli ultimi due sono le estensioni del browser (rispettivamente per Firefox e IE), che guardano solo una pagina, mentre WARI è destinato a guardare un intero sito. Tuttavia, non ho avuto molta fortuna nel far funzionare WARI.

0

Si può provare YUI Compressor. Funziona con file CSS e Javascript.

+4

Il compressore YUI è più di un minifier, e il suo funzionamento sono spiegate [qui] (http://developer.yahoo.com/yui/compressor/css.html). Non fa quello che l'OP sta chiedendo. – NullUserException

+0

Hai ragione. Grazie per le informazioni. YUI ti darà solo il file CSS più breve, ma non rimuoverà la ridondanza. – goenning

0

È possibile provare CSS Tidy (online version). Ridurrà la ridondanza, facoltativamente la conversione in stili di stenografia e può essere usata per creare output miniati e output piuttosto/formattati.

+0

Grazie per il collegamento alla versione online di CSS Tidy. Questo strumento, tuttavia, non rimuove la ridondanza nel senso che ho delineato sopra. Ho appena provato e tutto ciò che fa è sostituire "# 000000" con "# 000", "0.5em" con ".5em", "bianco" con "#FFF" - che non è chiaramente quello che voglio. Affronta la ridondanza "numero di caratteri", non affronta la ridondanza della "logica a cascata". Sto cercando uno strumento che mi dirà, ad esempio, che un attributo "font-size: 10px" di un elemento figlio è ridondante perché è già ereditato dal suo genitore. –

+1

non proprio quello che lui stava chiedendo – gtrak

+0

E si prenderà cura di ridondanza logica all'interno di un foglio di stile (vale a dire che si combinano stili ed eliminare le dichiarazioni duplicate dello stesso stile). Tuttavia, non sarà in grado di determinare la ridondanza dalla struttura del tuo codice HTML, è vero. – bdukes

1

Non sono a conoscenza di un tale strumento e guardando la complessità dei CSS, non sono nemmeno sicuro che sia possibile risolverlo (alcuni stili CSS sono lì solo per colpire i vecchi browser in conformità). Quindi, quanto valore ha uno strumento che crea un nuovo CSS conforme a W3C che non viene visualizzato sulla maggior parte dei browser a causa di bug?

Detto questo, si dovrebbe dare un'occhiata a Envjs che consente di leggere una pagina Web in un browser emulato e quindi esaminare il risultato. Non perfetto ma potrebbe iniziare.

+1

Tali hack non dovrebbero essere utilizzati o, se assolutamente necessario, messi in quarantena nel proprio foglio di stile, quindi non credo che negino l'utilità di tale strumento. –

+0

@BobbyJack Sì, è bello in teoria. Ad esempio, l'OP sembra essere un problema di file che non sono stati originariamente creati da lui. –

2

Controlla SASS, è un compilatore CSS con una propria lingua e sintassi, ma ha capacità di importazione CSS. http://sass-lang.com/

Mi chiedo se un semplice ciclo di importazione/esportazione potrebbe fare il trucco per voi?

Modifica: Sembra che un ciclo di importazione/esportazione non sia sufficiente, ma SASS offre servizi che semplificano la vita durante il refactoring.

+1

Oltre a Sass, utilizzare Compass per gestire il proprio foglio di stile. Gestisce la configurazione di build e ha una libreria di utili espressioni CSS per abbreviare il codice sorgente. Una semplice importazione/esportazione non cambierà il tuo CSS. È necessario rifattorizzarlo in parti più riutilizzabili usando il mixin di Sass e estendere le funzionalità. –

2

Penso che tu stia cercando il Santo Graal dei CSS. Non penso che esista. Il problema è che non sai mai esattamente cosa renderà il rendering del browser e ne avrai bisogno nel tuo foglio di stile. Ho usato il plugin Dust-me Selectors per Firefox per aiutare a localizzare gli stili inutilizzati, ma farlo automaticamente è un compito difficile.

Detto questo, penso che l'utilizzo di un framework come SASS (come già accennato) o LESS sia una risposta di tipo round alla domanda.I framework eliminano gran parte della ridondanza e rendono compatto il tuo CSS. Mi piace meno di SASS per via delle somiglianze con i CSS.

+0

Confronta con http://stackoverflow.com/questions/3518740/less-sass-css-opposite-from-minification-optimizations – NullUserException

2

Aaron rende un buon punto sulla complessità. Ad esempio, un tale strumento avrebbe bisogno di accedere non solo ai file CSS, ma anche all'HTML (non sarebbe in grado di determinare cose come l'ereditarietà, altrimenti). Stai cercando qualcosa che possa spiderare un intero sito e prendere in considerazione ogni pagina, o il markup può essere fornito dai file?

È anche probabile che un tale strumento generi CSS che è meno gestibile di quanto un produttore di web decente produrrebbe (sto pensando di accorciare i selettori che potrebbero essere semplicemente "ri-allungati" in un secondo momento). Questo non è un problema se si tratta solo di un'azione temporanea, ma mi chiedo il motivo per cui dovresti farlo in primo luogo.

Problemi correlati