@while

Правило @while, записанное @while <expression> { ... }, оценивает свой блок, если его выражение возвращает true. Затем, если его выражение все еще возвращает true, он снова оценивает свой блок. Это продолжается до тех пор, пока выражение, наконец, не вернет false.

SCSS Syntax

@use "sass:math";

/// Делит `$value` на `$ratio` , пока оно не станет меньше `$base`.
@function scale-below($value, $base, $ratio: 1.618) {
  @while $value > $base {
    $value: math.div($value, $ratio);
  }
  @return $value;
}

$normal-font-size: 16px;
sup {
  font-size: scale-below(20px, 16px);
}

Sass Syntax

@use "sass:math"

/// Делит `$value` на `$ratio` , пока оно не станет меньше `$base`.
@function scale-below($value, $base, $ratio: 1.618)
  @while $value > $base
    $value: math.div($value, $ratio)
  @return $value



$normal-font-size: 16px
sup
  font-size: scale-below(20px, 16px)

CSS Output

sup {
  font-size: 12.36094px;
}











⚠️ Внимание!

Хотя @while необходим для нескольких особенно сложных таблиц стилей, обычно лучше использовать @each или @for, если любой из них будет работать. Они более понятны для читателя и часто быстрее компилируются.

Истинность и ложность permalinkИстинность и ложность

Везде, где разрешены true или false, вы также можете использовать другие значения. Значения false и null равны файльшивому, что означает, что Sass считает, что они указывают на ложность и вызывают невыполнение условий. Все остальные значения считаются истинными, поэтому Sass считает, что они работают как true и вызывают выполнение условий.

Например, если вы хотите проверить, содержит ли строка пробел, вы можете просто написать string.index($string, " "). Функция string.index() возвращает null, если строка не найдена, и число в противном случае.

⚠️ Внимание!

Некоторые языки считают ложными больше значений, чем просто false и null. Sass - не один из таких языков! Пустые строки, пустые списки и число 0 - все это истинно в Sass.