Sass negativer variabler Wert?

107

Ich habe ein paar scss-Selektoren, bei denen ich die gleiche Menge positiv und negativ verwende, wie in:

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

Ich würde es vorziehen, eine Variable für alle 15px-Beträge zu verwenden, aber das funktioniert nicht:

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

Die Margenbeträge werden in positive Zahlen umgewandelt. Vermisse ich etwas

Steve
quelle

Antworten:

215

Versuchen Sie es so

margin: 0 (-$pad) 20px (-$pad);
Zoltan Toth
quelle
1
Dieser Ansatz wurde automatisch ausprobiert - scheint bei Verwendung der Calc-Funktion nicht zu funktionieren. Bearbeiten: Scheint, als müssten Sie bei der Verwendung von calc
Kevin
2

Ich füge meine zwei Penneth hinzu, nachdem ich die beiden vorherigen Antworten berücksichtigt habe, lese dann aber dies (Hervorhebung meiner):

Sie sollten besonders vermeiden, Interpolation wie zu verwenden#{$number}px . Dadurch wird keine Nummer erstellt! Es wird eine nicht in Anführungszeichen gesetzte Zeichenfolge erstellt, die wie eine Zahl aussieht, jedoch nicht mit Zahlenoperationen oder -funktionen funktioniert. Versuchen Sie, Ihre Matheeinheit sauber zu machen, damit die Einheit $numberbereits vorhanden ist px, oder schreiben Sie $number * 1px.

Quelle

Daher glaube ich, dass der richtige Weg wie folgt wäre, wodurch die mathematischen Fähigkeiten von SASS / SCSS erhalten bleiben:

$pad: 15px;
padding: 0 $pad $pad;
margin: 0 $pad*-1 20px $pad*-1;
EvilDr
quelle
Auf den ersten Blick scheint es eine Fehlentscheidung zu sein (Ihre Antwort), aber auf den zweiten Blick ist es wirklich die bessere Antwort. Wenn die Variable zu einer negativen Variablen wird, wird die Antwort schließlich positiv! $ pad: -2rem; ... margin: 0 - # {$ pad}; // wird zum Rand: 0 --2rem; Rand: 0 $ pad * -1; // wird Rand: 0 2rem;
Fnordius