sass:math

相容性
Dart Sass
自 1.23.0 起
LibSass
Ruby Sass

目前只有 Dart Sass 支援使用 @use 載入內建模組。其他實作的使用者必須改用全域名稱呼叫函式。

變數變數永久連結

math.$e
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

最接近數學常數 *e* 的 64 位元浮點數近似值。數學常數 *e*

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.$e; // 2.7182818285
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.$e  // 2.7182818285
math.$epsilon
相容性
Dart Sass
自 1.55.0 起
LibSass
Ruby Sass

根據浮點數比較,1 與大於 1 的最小 64 位元浮點數之間的差值。由於 Sass 數字的10 位數精度,在許多情況下,這看起來會是 0。

math.$max-number
相容性
Dart Sass
自 1.55.0 起
LibSass
Ruby Sass

可以表示為 64 位元浮點數的最大有限數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.$max-number; // 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.$max-number  // 179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
math.$max-safe-integer
相容性
Dart Sass
自 1.55.0 起
LibSass
Ruby Sass

最大整數 *n*,使得 *n* 和 *n + 1* 都可以精確表示為 64 位元浮點數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.$max-safe-integer; // 9007199254740991
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.$max-safe-integer  // 9007199254740991
math.$min-number
相容性
Dart Sass
自 1.55.0 起
LibSass
Ruby Sass

可以表示為 64 位元浮點數的最小正數。由於 Sass 數字的10 位數精度,在許多情況下,這看起來會是 0。

math.$min-safe-integer
相容性
Dart Sass
自 1.55.0 起
LibSass
Ruby Sass

最小整數 *n*,使得 *n* 和 *n - 1* 都可以精確表示為 64 位元浮點數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.$min-safe-integer; // -9007199254740991
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.$min-safe-integer  // -9007199254740991
math.$pi
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

最接近數學常數 *π* 的 64 位元浮點數近似值。數學常數 *π*

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.$pi; // 3.1415926536
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.$pi  // 3.1415926536

邊界函式邊界函式永久連結

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

$number 四捨五入至下一個最大的整數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.ceil(4); // 4
@debug math.ceil(4.2); // 5
@debug math.ceil(4.9); // 5
程式碼遊樂場

Sass 語法

@use 'sass:math'

@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
自 1.25.0 起
LibSass
Ruby Sass

$number 限制在 $min$max 的範圍內。如果 $number 小於 $min,則返回 $min;如果大於 $max,則返回 $max

$min$number$max 必須具有相容的單位,或者全部無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.clamp(-1, 0, 1); // 0
@debug math.clamp(1px, -1px, 10px); // 1px
@debug math.clamp(-1in, 1cm, 10mm); // 10mm
程式碼遊樂場

Sass 語法

@use 'sass:math'

@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 語法

@use 'sass:math';

@debug math.floor(4); // 4
@debug math.floor(4.2); // 4
@debug math.floor(4.9); // 4
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

返回一個或多個數字中的最大值。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

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

$widths: 50px, 30px, 100px;
@debug math.max($widths...); // 100px
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

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

返回一個或多個數字中的最小值。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

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

$widths: 50px, 30px, 100px;
@debug math.min($widths...); // 30px
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

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

$number 四捨五入至最接近的整數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.round(4); // 4
@debug math.round(4.2); // 4
@debug math.round(4.9); // 5
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

距離函數距離函數永久連結

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

返回 $number絕對值。如果 $number 為負數,則返回 -$number;如果 $number 為正數,則按原樣返回 $number

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.abs(10px); // 10px
@debug math.abs(-10px); // 10px
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.abs(10px) // 10px
@debug math.abs(-10px) // 10px
math.hypot($number...) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

返回以每個 $number 作為分量的 n向量的長度。例如,對於三個數字 abc,此函數返回 a² + b² + c² 的平方根。

這些數字必須全部具有相容的單位,或者全部無單位。由於數字的單位可能不同,輸出採用第一個數字的單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

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

$lengths: 1in, 10cm, 50px;
@debug math.hypot($lengths...); // 4.0952775683in
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

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

指數函數指數函數永久連結

math.log($number, $base: null) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

返回以 $base 為底的 $number對數。如果 $basenull,則計算自然對數

$number$base 必須無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.log(10); // 2.302585093
@debug math.log(10, 10); // 1
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.log(10) // 2.302585093
@debug math.log(10, 10) // 1
math.pow($base, $exponent) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

$base $exponent 次方

$base$exponent 必須無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.pow(10, 2); // 100
@debug math.pow(100, math.div(1, 3)); // 4.6415888336
@debug math.pow(5, -2); // 0.04
程式碼遊樂場

Sass 語法

@use 'sass:math'

@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
自 1.25.0 起
LibSass
Ruby Sass

返回 $number平方根

$number 必須無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.sqrt(100); // 10
@debug math.sqrt(math.div(1, 3)); // 0.5773502692
@debug math.sqrt(-1); // NaN
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

三角函數三角函數永久連結

math.cos($number) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

返回 $number餘弦

$number 必須是角度(其單位必須與 deg 相容)或無單位。如果 $number 沒有單位,則假設其單位為 rad

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.cos(100deg); // -0.1736481777
@debug math.cos(1rad); // 0.5403023059
@debug math.cos(1); // 0.5403023059
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.cos(100deg) // -0.1736481777
@debug math.cos(1rad) // 0.5403023059
@debug math.cos(1) // 0.5403023059
math.sin($number) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

返回 $number正弦

$number 必須是角度(其單位必須與 deg 相容)或無單位。如果 $number 沒有單位,則假設其單位為 rad

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.sin(100deg); // 0.984807753
@debug math.sin(1rad); // 0.8414709848
@debug math.sin(1); // 0.8414709848
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.sin(100deg) // 0.984807753
@debug math.sin(1rad) // 0.8414709848
@debug math.sin(1) // 0.8414709848
math.tan($number) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

返回 $number正切

$number 必須是角度(其單位必須與 deg 相容)或無單位。如果 $number 沒有單位,則假設其單位為 rad

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.tan(100deg); // -5.6712818196
@debug math.tan(1rad); // 1.5574077247
@debug math.tan(1); // 1.5574077247
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.tan(100deg) // -5.6712818196
@debug math.tan(1rad) // 1.5574077247
@debug math.tan(1) // 1.5574077247
math.acos($number) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

deg 為單位返回 $number反餘弦

$number 必須無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.acos(0.5); // 60deg
@debug math.acos(2); // NaNdeg
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.acos(0.5) // 60deg
@debug math.acos(2) // NaNdeg
math.asin($number) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

deg 為單位返回 $number反正弦

$number 必須無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.asin(0.5); // 30deg
@debug math.asin(2); // NaNdeg
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.asin(0.5) // 30deg
@debug math.asin(2) // NaNdeg
math.atan($number) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

deg 為單位返回 $number反正切

$number 必須無單位。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.atan(10); // 84.2894068625deg
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.atan(10) // 84.2894068625deg
math.atan2($y, $x) //=> number
相容性
Dart Sass
自 1.25.0 起
LibSass
Ruby Sass

deg 為單位返回 $y$x雙變數反正切

$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 語法

@use 'sass:math';

@debug math.atan2(-1, 1); // 135deg
程式碼遊樂場

Sass 語法

@use 'sass:math'

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

單位函數單位函數永久連結

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

返回 $number1$number2 是否具有相容的單位。

如果回傳值為 true,則 $number1$number2 可以安全地進行 加法減法比較 運算。否則,執行這些運算會產生錯誤。

⚠️ 注意!

此函式的全域名稱為 comparable,但當它被添加到 sass:math 模組時,名稱被更改為 compatible,以便更清楚地表達函式的功能。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.compatible(2px, 1px); // true
@debug math.compatible(100px, 3em); // false
@debug math.compatible(10cm, 3mm); // true
程式碼遊樂場

Sass 語法

@use 'sass:math'

@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 語法

@use 'sass:math';

@debug math.is-unitless(100); // true
@debug math.is-unitless(100px); // false
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.is-unitless(100)  // true
@debug math.is-unitless(100px)  // false
math.unit($number)
unit($number) //=> quoted string

回傳 $number 單位的字串表示形式。

⚠️ 注意!

此函式旨在用於除錯;其輸出格式不保證在不同 Sass 版本或實作之間保持一致。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@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 語法

@use 'sass:math'

@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"

其他函式其他函式永久連結

math.div($number1, $number2) //=> number
相容性
Dart Sass
自 1.33.0 版本起
LibSass
Ruby Sass

回傳 $number1 除以 $number2 的結果。

兩個數字共有的任何單位都將被抵銷。$number1 中不在 $number2 中的單位將會出現在回傳值的分子中,而 $number2 中不在 $number1 中的單位將會出現在回傳值的分母中。

⚠️ 注意!

為了向後相容,此函式會回傳與 已棄用的 / 運算子 *完全相同的結果*,包括使用 / 字元連接兩個字串。然而,此行為最終將被移除,不應在新樣式表中使用。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@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 語法

@use 'sass:math'

@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 語法

@use 'sass:math';

@debug math.percentage(0.2); // 20%
@debug math.percentage(math.div(100px, 50px)); // 200%
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.percentage(0.2)  // 20%
@debug math.percentage(math.div(100px, 50px))  // 200%
math.random($limit: null)
random($limit: null) //=> number

如果 $limitnull,則回傳介於 0 到 1 之間的隨機小數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.random(); // 0.2821251858
@debug math.random(); // 0.6221325814
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.random()  // 0.2821251858
@debug math.random()  // 0.6221325814

如果 $limit 是大於或等於 1 的數字,則回傳介於 1 到 $limit 之間的隨機整數。

⚠️ 注意!

random() 會忽略 $limit 中的單位。此行為已被棄用random($limit) 將回傳與 $limit 參數具有相同單位的隨機整數。

程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.random(100px); // 42
程式碼遊樂場

Sass 語法

@use 'sass:math'

@debug math.random(100px)  // 42
程式碼遊樂場

SCSS 語法

@use 'sass:math';

@debug math.random(10); // 4
@debug math.random(10000); // 5373
程式碼遊樂場

Sass 語法

@use 'sass:math'

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