Используя Sass, как преобразовать процент в десятичное число?

Сасс есть процент (функции) для преобразования безразмерного числа в процент, но я не могу найти функцию для обратного (процент до десятичного)

я использую Sass lightness() метод чтобы получить процент оттенка. Я хочу преобразовать этот процент в десятичное значение для использования при указании прозрачности rgba() цвета.

вот пример SCSS, который не удастся скомпилировать, потому что $transparent-color требуется $alpha значение, которое является десятичным, а не процентом.

$color: hsl(50deg, 50%, 50%);
$alpha: lightness($color);
$transparent-color: rgba(0,0,0,$alpha);
.foo { background: $transparent-color }

Я искал решения в Документация Sass и Компас Ссылка И знаете, что должен быть способ сделать это.

2 ответов


вы можете использовать Sass math для преобразования процента в десятичное значение, разделив процент на 100%.

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

код Sass:

$percent: 44%
.foo
  opacity: $percent / 100%

скомпилировано в CSS:

.foo { opacity: 0.44; }

в то время как SASS не предоставляет это как встроенную функцию, вы, безусловно, можете добавить пользовательскую функцию для выполнения преобразования. Взглянув на источник для percentage (), я сделал удар по тому, как будет выглядеть функция decimal ():

def decimal(value)
  unless value.is_a?(Sass::Script::Number) && value.unit_str == "%"
    raise ArgumentError.new("#{value.inspect} is not a percent")
  end
  Sass::Script::Number.new(value.value / 100.0)
end