Valore variabile negativo Sass?


107

Ho un paio di selettori scss in cui uso la stessa quantità positiva e negativa, come in:

padding: 0 15px 15px;
margin: 0 -15px 20px -15px;

Preferirei usare una variabile per tutti gli importi di 15px, ma questo non funziona:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 -$pad 20px -$pad;

Gli importi del margine vengono convertiti in numeri positivi. Mi sto perdendo qualcosa?

Risposte:


215

Provalo in questo modo

margin: 0 (-$pad) 20px (-$pad);

1
Ho provato automaticamente questo approccio: sembra non funzionare quando si utilizza la funzione calc. Modifica: sembra che non sia necessario utilizzare le parentesi quando si utilizza calc, ma è necessario interpolare stackoverflow.com/questions/17982111/…
Kevin


2

Aggiungo i miei due penneth dopo aver considerato le due risposte precedenti, ma poi ho letto questo (enfasi mia):

In particolare,#{$number}px dovresti evitare di usare l'interpolazione come . Questo in realtà non crea un numero! Crea una stringa non quotata che assomiglia a un numero, ma non funzionerà con alcuna operazione o funzione numerica. Prova a rendere pulita la tua unità matematica in modo che $numberabbia già l'unità px, o scrivi $number * 1px.

fonte

Pertanto credo che il modo corretto sarebbe il seguente, che preserva le capacità matematiche di SASS / SCSS:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 $pad*-1 20px $pad*-1;

A prima vista, sembra essere pignoleria (la tua risposta), ma a prima vista è davvero la risposta migliore. Dopo tutto, se la variabile diventa una variabile negativa, la risposta diventa positiva! $ pad: -2rem; ... margine: 0 - # {$ pad}; // diventa margine: 0 --2rem; margine: 0 $ pad * -1; // diventa margine: 0 2rem;
Fnordius,
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.