2012-06-20 12 views
5

Ho un foglio di stile con il seguente codice:Compressore YUI e contenuto CSS?

.author-name:before { 
content:"by: "; 
} 

Quando ho eseguito questo attraverso YUI Compressor, ottengo:

.author-name:before{content:"by:"} 

Questo è un problema perché spazza via gli spazi destinati. Ho pensato che utilizzando i commenti speciali YUI Compressor, in questo modo:

.author-name:before { 
    /*!YUI-Compressor */content: "by: "; 
} 

... potrebbe aiutare, ma sembra non farlo. Inoltre, i commenti stessi sono stati spazzati via. La mia impressione basata sul fatto è che i commenti in JavaScript che iniziano con /*!get preserved, ma che in realtà non sta accadendo.

In mancanza di post-elaborazione del processo di compilazione per la disattivazione, esiste un modo per farlo? Al momento stiamo utilizzando la versione 2.3.5 di YUI Compressor, e correre con le bandiere --charset utf8 -v -o

Quindi la mia domanda, in breve, è, c'è un modo per ottenere YUI Compressor a rispettare gli spazi in content: valori, o un modo aggiungere commenti CSS prima e dopo un blocco che non voglio minimizzare?

risposta

4

Per risolvere il problema, provare a utilizzare entità unicode, invece di carattere di spazio per sé:

.author-name:before {content: "by:\00A0"; } 

\00A0 in particolare è spazio unificatore.

+0

Questa è una buona soluzione. Sto ancora sperando in una soluzione YUI Compressor. Quanto è buona la sintassi '\ 00A0' supportata nei browser che supportano' content' per CSS 'content'? – artlung

+1

Perfettamente supportato su tutti i principali browser incluso IE8 +. Solo l'incoerenza che ho incontrato sta usando letterali composti come "" foo "" bar "' che ha problemi in IE per quanto mi ricordo, ma qui non è il caso. –

1

Si potrebbe aggiungere un margine al contenuto:

.author-name:before { 
    content: "by:"; 
    margin: 0 .35em 0 0; 
} 
+1

.3em o anche .35em è in genere più vicino alla larghezza del carattere dello spazio. –

+0

buon punto. è sempre meglio usare le proprietà css desiderate per le spaziature invece degli spazi bianchi. – apparat

+0

@ MaratTanalin: grazie, regolato. – erenon

2

Ho provato il tuo css utilizzando la versione 2.3.4 e 2.4.6 ed entrambi preservano lo spazio all'interno della stringa. Quindi è un bug molto specifico (non trova nulla nel bug tracker) o qualcos'altro sta andando storto. Sei sicuro che sia un carattere spazio ascii e apostrofi regolari (non quelli intelligenti di Windows o qualcosa del genere)?

Quando eseguo un test sullo stesso css sostituendo le virgolette ascii con il carattere unicode 201C, una virgoletta doppia a sinistra, lo spazio viene rimosso. Il motivo è piuttosto semplice: il parser non lo riconosce come una stringa e quindi lo toglie dallo spazio bianco.

Si consiglia di provare l'ultima versione da qui http://yuilibrary.com/download/yuicompressor/ in ogni caso. Nel caso in cui la tua versione attuale sia installata usando un gestore di pacchetti: basta estrarre il file .jar dalla cartella 'build' degli archivi.

+0

Grazie per il controllo. È così strano che si comporta diversamente. Lo sto risolvendo con le stringhe CSS sfuggite e questo sembra soddisfare le mie esigenze, ma quando torneremo sugli strumenti di questo progetto proverò le versioni più recenti di YUI Compressor. – artlung

+0

Oh, e sì, sono abbastanza sicuro che sia lo spazio standard e citi i caratteri nel CSS, non i caratteri di Windows. Ed è solo il mondo che viene spogliato. – artlung

+0

Aggiunto un altro test per chiarire l'osservazione sulle virgolette e un caso in cui gli spazi vengono rimossi. –