Значення змінної відхилення Sass?


107

У мене є пара селекторів scss, де я використовую ту саму кількість позитивного та негативного, як у:

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

Я вважаю за краще використовувати змінну для всіх 15px сум, але це не працює:

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

Суми маржі конвертуються у додатні числа. Я щось пропускаю?

Відповіді:


215

Спробуйте так

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

1
Автоматично випробуваний такий підхід - здається, не працює при використанні функції calc. Редагувати: Вам здається, що вам не потрібно використовувати дужки під час використання calc, але вам потрібно інтерполювати stackoverflow.com/questions/17982111/…
Кевін


2

Я додаю свою дві копійки після розгляду двох попередніх відповідей, але потім читаю це (наголос мій):

Особливо#{$number}px слід уникати використання подібної інтерполяції . Це насправді не створює число! Він створює рядок без котирування, який виглядає як число, але не працюватиме з будь-якими операціями чи функціями з числом. Спробуйте зробити математичну одиницю чистою, щоб вона $numberвже мала одиницю px, або запишіть $number * 1px.

Джерело

Тому я вважаю, що правильним шляхом був би такий, який зберігає математичні здібності SASS / SCSS:

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

На перший погляд, здається, це збирання ніт (ваша відповідь), але з другого погляду це справді краща відповідь. Зрештою, якщо змінна стає негативною змінною, відповідь стає позитивною! $ pad: -2rem; ... маржа: 0 - # {$ pad}; // стає маржею: 0 - 2rem; маржа: 0 $ pad * -1; // стає маржею: 0 2rem;
Фнордіус
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.