Страницы

Поиск по вопросам

вторник, 19 февраля 2019 г.

Конвертировать строку в число SCSS

Есть строка "14рх", как привести ее к числу в SCSS? К примеру для строкового представления значения есть функция inspect($value), для того, что бы узнать единицы связанные с числом есть unit($number). Но как быть если type-of(14рх) возвращает string, а нужно namber Поясняю: есть такой код, который смотрит есть ли у значения списка единицы измерения и если нет, то дописывает
@function chekList($list) { $tmp: (); @each $key in $list { @if(unitless($key)) { $key: inspect($key); $key: str-insert($key, "px", str-length($key) + 1); } $tmp: append($tmp, $key); } @return $tmp; }
Теперь бы еще конвертнуть полученные строковые значения в числовые.... Или посоветуйте как дописать единицы к числу, если их нет?
P.S. Ниже я дал ответ как можно добавить единицы измерения, если их нет. Но все же интересует как можно конвертировать строку в число. Допустим 10 + "px" на выходе даст строку "10рх", а нужно, что бы это было число.


Ответ

Прочитав статью, ссылку на которую дал soledar10 я не стал дублировать полностью функцию предоставленную там, для моих целей она нужна не полностью, а лишь та часть, где к числу добавляются единицы измерения. Немного модифицировав код из предыдущего ответа получилось вот что:
@function chekUnit($list) { $strings: 'px' 'cm' 'mm' '%' 'ch' 'pica' 'in' 'em' 'rem' 'pt' 'pc' 'ex' 'vw' 'vh' 'vmin' 'vmax'; $units: 1px 1cm 1mm 1% 1ch 1pica 1in 1em 1rem 1pt 1pc 1ex 1vw 1vh 1vmin 1vmax; $tmp: (); @each $key in $list { @if(unitless($key)) { $index: index($strings, $list-unit); @if not $index { @error "Unknown unit `#{$list-unit}`."; } $key: $key * nth($units, $index); } $tmp: append($tmp, $key); } @return $tmp; }
Где $list-unit - это переменная с задаваемыми единицами в настройках проекта.

Комментариев нет:

Отправить комментарий