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.

SCSS Syntax

@debug math.$e; // 2.7182818285

Sass Syntax

@debug math.$e // 2.7182818285
math.$pi 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Равно значению математической константы π.

SCSS Syntax

@debug math.$pi; // 3.1415926536

Sass Syntax

@debug math.$pi // 3.1415926536

Ограничивающие функции permalinkОграничивающие функции

math.ceil($number)
ceil($number) //=> number 

Округляет $number до следующего наибольшего целого числа.

SCSS Syntax

@debug math.ceil(4); // 4
@debug math.ceil(4.2); // 5
@debug math.ceil(4.9); // 5

Sass Syntax

@debug math.ceil(4)  // 4
@debug math.ceil(4.2)  // 5
@debug math.ceil(4.9)  // 5
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 должны иметь совместимые единицы измерения или все без единиц измерения.

SCSS Syntax

@debug math.clamp(-1, 0, 1); // 0
@debug math.clamp(1px, -1px, 10px); // 1px
@debug math.clamp(-1in, 1cm, 10mm); // 10mm

Sass Syntax

@debug math.clamp(-1, 0, 1) // 0
@debug math.clamp(1px, -1px, 10px) // 1px
@debug math.clamp(-1in, 1cm, 10mm) // 10mm
math.floor($number)
floor($number) //=> number 

Округляет $number до следующего наименьшего целого числа.

SCSS Syntax

@debug math.floor(4); // 4
@debug math.floor(4.2); // 4
@debug math.floor(4.9); // 4

Sass Syntax

@debug math.floor(4)  // 4
@debug math.floor(4.2)  // 4
@debug math.floor(4.9)  // 4
math.max($number...)
max($number...) //=> number 

Возвращает наибольшее из одного или нескольких чисел.

SCSS Syntax

@debug math.max(1px, 4px); // 4px

$widths: 50px, 30px, 100px;
@debug math.max($widths...); // 100px

Sass Syntax

@debug math.max(1px, 4px)  // 4px

$widths: 50px, 30px, 100px
@debug math.max($widths...)  // 100px
math.min($number...)
min($number...) //=> number 

Возвращает наименьшее из одного или нескольких чисел.

SCSS Syntax

@debug math.min(1px, 4px); // 1px

$widths: 50px, 30px, 100px;
@debug math.min($widths...); // 30px

Sass Syntax

@debug math.min(1px, 4px)  // 1px

$widths: 50px, 30px, 100px
@debug math.min($widths...)  // 30px
math.round($number)
round($number) //=> number 

Округляет $number до ближайшего целого числа.

SCSS Syntax

@debug math.round(4); // 4
@debug math.round(4.2); // 4
@debug math.round(4.9); // 5

Sass Syntax

@debug math.round(4)  // 4
@debug math.round(4.2)  // 4
@debug math.round(4.9)  // 5

Функции расстояний permalinkФункции расстояний

math.abs($number)
abs($number) //=> number 

Возвращает абсолютное значение числа $number. Если $number отрицательно, это возвращает -$number, а если $number положительно, оно возвращает $number как есть.

SCSS Syntax

@debug math.abs(10px); // 10px
@debug math.abs(-10px); // 10px

Sass Syntax

@debug math.abs(10px) // 10px
@debug math.abs(-10px) // 10px
math.hypot($number...) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает длину n-мерного вектора, который имеет компоненты, равные каждому $number. Например, для трех чисел a, b и c, это возвращает квадратный корень из a² + b² + c².

Все числа должны иметь совместимые единицы измерения или все без единиц измерения. А поскольку единицы измерения чисел могут отличаться, в выходных данных берется единица первого числа.

SCSS Syntax

@debug math.hypot(3, 4); // 5

$lengths: 1in, 10cm, 50px;
@debug math.hypot($lengths...); // 4.0952775683in

Sass Syntax

@debug math.hypot(3, 4) // 5

$lengths: 1in, 10cm, 50px
@debug math.hypot($lengths...) // 4.0952775683in

Экспоненциальные функции permalinkЭкспоненциальные функции

math.log($number, $base: null) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает логарифм числа $number относительно $base. Если $base равно null, вычисляется натуральный логарифм.

$number и $base не должны иметь единиц измерения.

SCSS Syntax

@debug math.log(10); // 2.302585093
@debug math.log(10, 10); // 1

Sass Syntax

@debug math.log(10) // 2.302585093
@debug math.log(10, 10) // 1
math.pow($base, $exponent) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возводит $base в степень $exponent.

$base и $exponent должны быть безразмерными.

SCSS Syntax

@debug math.pow(10, 2); // 100
@debug math.pow(100, math.div(1, 3)); // 4.6415888336
@debug math.pow(5, -2); // 0.04

Sass Syntax

@debug math.pow(10, 2) // 100
@debug math.pow(100, math.div(1, 3)) // 4.6415888336
@debug math.pow(5, -2) // 0.04
math.sqrt($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает квадратный корень из $number.

$number должны быть безразмерными.

SCSS Syntax

@debug math.sqrt(100); // 10
@debug math.sqrt(math.div(1, 3)); // 0.5773502692
@debug math.sqrt(-1); // NaN

Sass Syntax

@debug math.sqrt(100) // 10
@debug math.sqrt(math.div(1, 3)) // 0.5773502692
@debug math.sqrt(-1) // NaN

Тригонометрические функции permalinkТригонометрические функции

math.cos($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает косинус числа $number.

$number должно быть углом (его единицы измерения должны быть совместимы с градусом deg) или безразмерным. Если в $number нет единиц измерения, предполагается, что оно выражено в rad.

SCSS Syntax

@debug math.cos(100deg); // -0.1736481777
@debug math.cos(1rad); // 0.5403023059
@debug math.cos(1); // 0.5403023059

Sass Syntax

@debug math.cos(100deg) // -0.1736481777
@debug math.cos(1rad) // 0.5403023059
@debug math.cos(1) // 0.5403023059
math.sin($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает синус числа $number.

$number должно быть углом (его единицы измерения должны быть совместимы с deg) или безразмерным. Если в $number нет единиц измерения, предполагается, что оно выражено в rad.

SCSS Syntax

@debug math.sin(100deg); // 0.984807753
@debug math.sin(1rad); // 0.8414709848
@debug math.sin(1); // 0.8414709848

Sass Syntax

@debug math.sin(100deg) // 0.984807753
@debug math.sin(1rad) // 0.8414709848
@debug math.sin(1) // 0.8414709848
math.tan($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает тангенс числа $number.

$number должно быть углом (его единицы измерения должны быть совместимы с deg) или безразмерным. Если в $number нет единиц измерения, предполагается, что оно выражено в rad.

SCSS Syntax

@debug math.tan(100deg); // -5.6712818196
@debug math.tan(1rad); // 1.5574077247
@debug math.tan(1); // 1.5574077247

Sass Syntax

@debug math.tan(100deg) // -5.6712818196
@debug math.tan(1rad) // 1.5574077247
@debug math.tan(1) // 1.5574077247
math.acos($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает арккосинус числа $number в deg.

$number должны быть безразмерными.

SCSS Syntax

@debug math.acos(0.5); // 60deg
@debug math.acos(2); // NaNdeg

Sass Syntax

@debug math.acos(0.5) // 60deg
@debug math.acos(2) // NaNdeg
math.asin($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает арксинус числа $number в deg.

$number должны быть безразмерными.

SCSS Syntax

@debug math.asin(0.5); // 30deg
@debug math.asin(2); // NaNdeg

Sass Syntax

@debug math.asin(0.5) // 30deg
@debug math.asin(2) // NaNdeg
math.atan($number) //=> number 
Совместимость:
Dart Sass
since 1.25.0
LibSass
Ruby Sass

Возвращает арктангенс числа $number в deg.

$number должны быть безразмерными.

SCSS Syntax

@debug math.atan(10); // 84.2894068625deg

Sass Syntax

@debug math.atan(10) // 84.2894068625deg
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.

SCSS Syntax

@debug math.atan2(-1, 1); // 135deg

Sass Syntax

@debug math.atan2(-1, 1) // 135deg

Функции единиц permalinkФункции единиц

math.compatible($number1, $number2)
comparable($number1, $number2) //=> boolean 

Возвращает, есть ли у $number1 и $number2 совместимые единицы измерения.

Если это возвращает true, $number1 и $number2 можно безопасно добавить, вычесть и сравнить. В противном случае это приведет к ошибкам.

⚠️ Внимание!

Глобальное имя этой функции - comparable, но когда она была добавлена в модуль sass:math имя было изменено на compatible, чтобы более четко передать, что делает функция.

SCSS Syntax

@debug math.compatible(2px, 1px); // true
@debug math.compatible(100px, 3em); // false
@debug math.compatible(10cm, 3mm); // true

Sass Syntax

@debug math.compatible(2px, 1px)  // true
@debug math.compatible(100px, 3em)  // false
@debug math.compatible(10cm, 3mm)  // true
math.is-unitless($number)
unitless($number) //=> boolean 

Возвращает, не имеет ли $number единиц измерения.

SCSS Syntax

@debug math.is-unitless(100); // true
@debug math.is-unitless(100px); // false

Sass Syntax

@debug math.is-unitless(100)  // true
@debug math.is-unitless(100px)  // false
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%.

SCSS Syntax

@debug math.percentage(0.2); // 20%
@debug math.percentage(math.div(100px, 50px)); // 200%

Sass Syntax

@debug math.percentage(0.2)  // 20%
@debug math.percentage(math.div(100px, 50px))  // 200%
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.

SCSS Syntax

@debug math.random(10); // 4
@debug math.random(10000); // 5373

Sass Syntax

@debug math.random(10)  // 4
@debug math.random(10000)  // 5373