2013-03-26 16 views
5

Uso le ultime versioni di SASS/Compass per lo sviluppo di CSS. Ho dichiarato alcune variabili SASS all'inizio della "media = all" foglio di stile come questo:Variabili Sass nelle variabili di sostituzione foglio stile di stampa nel foglio di stile "tutti"

$var1: red; 
$var2: blue; 
$var3: black; 
$var4: green; 

avanti in questo file SCSS ho importare un foglio di stile di stampa (@import 'print.scss';) che sembra in questo modo:

@media print { 
    $var1: black; 
    $var2: black; 
    $var4:black; 
} 

ho pensato, che le variabili del foglio di stile di stampa sovrascrive il "normale" vars solo se il browser è in "modalità di stampa". Ma le variabili sostituiscono sempre le "normali" vars dichiarate in precedenza.

Sono un po 'confuso e apprezzo qualsiasi aiuto.

Grazie!

risposta

2

Come per le domande this, in pratica non è possibile nel modulo attuale. Se si vuole raggiungere questo obiettivo, si dovrà importare ogni stile che fa uso del $varX, come:

$blue: blue; 

.test{ 
    color: $blue; 
} 

@media print { 
    $blue: pink; 
    .test{ 
     color: $blue; 
    } 
} 

uscita:

.test{color:blue}@media print{.test{color:pink}} 

Non è la soluzione ideale (si otterrà un sacco di codice ripetuto), ma sfortunatamente è tutto quello che puoi fare a causa del modo in cui il CSS funziona.

Questa può essere una soluzione leggermente migliore:

$blue: blue; 
$print_blue: pink; 

.test{ 
    color: $blue; 
    text-align: right; 
    @media print { 
     color: $print_blue; 
    } 
} 

uscita:

.test{color:blue;text-align:right}@media print{.test{color:pink}} 
+0

Grazie per la risposta! Ho temuto che dovessi fare qualcosa del genere :-(Forse questa funzionalità potrebbe essere qualcosa per la prossima versione di SASS ... – captainh2ok

+1

@ captainh2ok questa non può essere una funzionalità per la prossima versione perché il compilatore SIDE lato server non può sapere quale stato il browser sarà dentro. Dovresti spostare la compilazione del css sul client come LESS lo sta facendo con less.js. – Christoph

+1

@Christoph Hai certamente ragione: il compilatore SASS non funziona come una "intelligenza artificiale". E così a volte ... – captainh2ok

Problemi correlati