sass:math
- Dart Sass
- since 1.23.0
- LibSass
- ✗
- Ruby Sass
- ✗
В настоящее время только Dart Sass поддерживает загрузку встроенных модулей с помощью @use
. Пользователи других реализаций должны вместо этого вызывать функции, используя их глобальные имена.
Переменные permalinkПеременные
math.$e
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Равно значению математической константы e.
math.$pi
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Равно значению математической константы π.
Ограничивающие функции permalinkОграничивающие функции
math.ceil($number)
ceil($number) //=> number
Округляет $number
до следующего наибольшего целого числа.
math.clamp($min, $number, $max) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Ограничивает $number
диапазоном от $min
до $max
. Если $number
меньше $min
, возвращается $min
, а если оно больше $max
, возвращается $max
.
$min
, $number
и $max
должны иметь совместимые единицы измерения или все без единиц измерения.
math.floor($number)
floor($number) //=> number
Округляет $number
до следующего наименьшего целого числа.
math.max($number...)
max($number...) //=> number
Возвращает наибольшее из одного или нескольких чисел.
math.min($number...)
min($number...) //=> number
Возвращает наименьшее из одного или нескольких чисел.
math.round($number)
round($number) //=> number
Округляет $number
до ближайшего целого числа.
Функции расстояний permalinkФункции расстояний
math.abs($number)
abs($number) //=> number
Возвращает абсолютное значение числа $number
. Если $number
отрицательно, это возвращает -$number
, а если $number
положительно, оно возвращает $number
как есть.
math.hypot($number...) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает длину n-мерного вектора, который имеет компоненты, равные каждому $number
. Например, для трех чисел a, b и c, это возвращает квадратный корень из a² + b² + c².
Все числа должны иметь совместимые единицы измерения или все без единиц измерения. А поскольку единицы измерения чисел могут отличаться, в выходных данных берется единица первого числа.
Экспоненциальные функции permalinkЭкспоненциальные функции
math.log($number, $base: null) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает логарифм числа $number
относительно $base
. Если $base
равно null
, вычисляется натуральный логарифм.
$number
и $base
не должны иметь единиц измерения.
math.pow($base, $exponent) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возводит $base
в степень $exponent
.
$base
и $exponent
должны быть безразмерными.
math.sqrt($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает квадратный корень из $number
.
$number
должны быть безразмерными.
Тригонометрические функции permalinkТригонометрические функции
math.cos($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает косинус числа $number
.
$number
должно быть углом (его единицы измерения должны быть совместимы с градусом deg
) или безразмерным. Если в $number
нет единиц измерения, предполагается, что оно выражено в rad
.
math.sin($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает синус числа $number
.
$number
должно быть углом (его единицы измерения должны быть совместимы с deg
) или безразмерным. Если в $number
нет единиц измерения, предполагается, что оно выражено в rad
.
math.tan($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает тангенс числа $number
.
$number
должно быть углом (его единицы измерения должны быть совместимы с deg
) или безразмерным. Если в $number
нет единиц измерения, предполагается, что оно выражено в rad
.
math.acos($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает арккосинус числа $number
в deg
.
$number
должны быть безразмерными.
math.asin($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает арксинус числа $number
в deg
.
$number
должны быть безразмерными.
math.atan($number) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает арктангенс числа $number
в deg
.
$number
должны быть безразмерными.
math.atan2($y, $x) //=> number
- Dart Sass
- since 1.25.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает арктангенс с двумя аргументами числа $y
и $x
в deg
.
$y
и $x
должны иметь совместимые единицы или быть без единиц измерения.
💡 Интересный факт:
math.atan2($y, $x)
отличается от atan(math.div($y, $x))
, поскольку сохраняет квадрант рассматриваемой точки. Например, math.atan2(1, -1)
соответствует точке (-1, 1)
и возвращает 135deg
. Напротив, math.atan(math.div(1, -1))
и math.atan(math.div(-1, 1))
сначала разрешаются в atan(-1)
, поэтому оба возвращают -45deg
.
Функции единиц permalinkФункции единиц
math.compatible($number1, $number2)
comparable($number1, $number2) //=> boolean
Возвращает, есть ли у $number1
и $number2
совместимые единицы измерения.
Если это возвращает true
, $number1
и $number2
можно безопасно добавить, вычесть и сравнить. В противном случае это приведет к ошибкам.
⚠️ Внимание!
Глобальное имя этой функции - comparable
, но когда она была добавлена в модуль sass:math
имя было изменено на compatible
, чтобы более четко передать, что делает функция.
math.unit($number)
unit($number) //=> quoted string
Возвращает строковое представление единиц $number
.
⚠️ Внимание!
Эта функция предназначена для отладки; его выходной формат не гарантирует единообразия для разных версий или реализаций Sass.
SCSS Syntax
@debug math.unit(100); // ""
@debug math.unit(100px); // "px"
@debug math.unit(5px * 10px); // "px*px"
@debug math.unit(math.div(5px, 1s)); // "px/s"
Sass Syntax
@debug math.unit(100) // ""
@debug math.unit(100px) // "px"
@debug math.unit(5px * 10px) // "px*px"
@debug math.unit(math.div(5px, 1s)) // "px/s"
Прочие функции permalinkПрочие функции
math.div($number1, $number2) //=> number
- Dart Sass
- since 1.33.0
- LibSass
- ✗
- Ruby Sass
- ✗
Возвращает результат деления $number1
на $number2
.
Любые единицы, общие для обоих номеров, будут аннулированы. Единицы в $number1
, которых нет в $number2
, попадут в числитель возвращаемого значения, а единицы в $number2
, которых нет в $number1
, попадут в его знаменатель.
⚠️ Внимание!
В целях обратной совместимости это возвращает точно такой же результат, как устаревший оператор /
, включая объединение двух строк с символом /
между ними. Однако со временем это поведение будет удалено, и его не следует использовать в новых таблицах стилей.
SCSS Syntax
@debug math.div(1, 2); // 0.5
@debug math.div(100px, 5px); // 20
@debug math.div(100px, 5); // 20px
@debug math.div(100px, 5s); // 20px/s
Sass Syntax
@debug math.div(1, 2) // 0.5
@debug math.div(100px, 5px) // 20
@debug math.div(100px, 5) // 20px
@debug math.div(100px, 5s) // 20px/s
math.percentage($number)
percentage($number) //=> number
Преобразует безразмерное $number
(обычно десятичное число от 0 до 1) в процент.
💡 Интересный факт:
Эта функция идентична $number * 100%
.
math.random($limit: null)
random($limit: null) //=> number
Если $limit
равен null
, возвращает случайное десятичное число от 0 до 1.
SCSS Syntax
@debug math.random(); // 0.2821251858
@debug math.random(); // 0.6221325814
Sass Syntax
@debug math.random() // 0.2821251858
@debug math.random() // 0.6221325814
Если $limit
является числом больше или равным 1, возвращает случайное целое число от 1 до $limit
.