Ho recentemente iniziato a usare MENO CSS - E 'fantastico (ti consiglio di controllare se non lo hai ancora).
Sto lavorando a un progetto, dove vorrei fare quanto segue (non è la sintassi corretta, è solo per cercare di spiegare il mio problema):
if(lightness(@background_color) <= 50%)
{
@secondary_color = #fff;
}
else
{
@secondary_color = #000;
}
So che posso usare mixins per questo, ma il metodo sopra mi eviterà di dover scrivere un mixin ogni volta che ho bisogno di cambiare un colore in base al @background_color
variabile (poiché userò @secondary_color
per bordi, colori di sfondo, ecc.).
Ho cercato di trovare una soluzione, ma non ho avuto fortuna. Se qualcuno ha qualche idea su cosa posso fare per farlo funzionare, mi piacerebbe ascoltarli.
Grazie!
risposte:
5 per risposta № 1AGGIORNARE Ho appena riletto il tuo commento e capisco meglio il problema. Questo dovrebbe funzionare:
.secColor (@bgc, @prop) when (lightness(@bgc) >= 50%) and (@prop = color){
color: black;
}
.secColor (@bgc, @prop) when (lightness(@bgc) >= 50%) and (@prop = background){
background-color: black;
}
.secColor (@bgc, @prop) when (lightness(@bgc) >= 50%) and (@prop = border){
border-color: black;
}
.secColor (@bgc, @prop) when (lightness(@bgc) >= 50%) and (@prop = all){
color: black;
background-color: black;
border-color: black;
}
.secColor (@bgc, @prop) when (lightness(@bgc) < 50%) and (@prop = color){
color: white
}
.secColor (@bgc, @prop) when (lightness(@bgc) < 50%) and (@prop = background){
background-color: white;
}
.secColor (@bgc, @prop) when (lightness(@bgc) < 50%) and (@prop = border){
border-color: white;
}
.secColor (@bgc, @prop) when (lightness(@bgc) < 50%) and (@prop = all){
color: white;
background-color: white;
border-color: white;
}
Quindi usa il mixin:
.class1 {
.secColor (#fff, color) //should only set the color property for class1
}
.class2 {
.secColor (#000, all) //should set all three properties for class2
}
AGGIUNTA DI PIÙ VERSIONE COMPATTA
.propSwitch (@prop, @clr) when (@prop = color) {
color: @clr;
}
.propSwitch (@prop, @clr) when (@prop = background) {
background-color: @clr;
}
.propSwitch (@prop, @clr) when (@prop = border) {
border-color: @clr;
}
.propSwitch (@prop, @clr) when (@prop = all) {
color: @clr;
background-color: @clr;
border-color: @clr;
}
.secColor (@bgc, @prop) when (lightness(@bgc) >= 50%) {
.propSwitch (@prop, #000);
}
.secColor (@bgc, @prop) when (lightness(@bgc) < 50%) {
.propSwitch (@prop, #fff);
}