Stylus +cache не разрешает форматированные строки

Я не понимаю, почему что-то подобное происходит, исходя из этой статьи

+media(s("'(min-width: %spx)'", $max-padding)) // doesn't work
+media('(max-width: ' + $max-padding + 'px)') // sloppy but works

Верх компилируется в правильную вещь в командной строке, но +cache не принимает ее


person Maruf    schedule 15.10.2014    source источник


Ответы (1)


Это происходит потому, что s() выводит токен literal вместо string. Самый простой способ исправить это — убедиться, что $condition внутри миксина media является строкой, поэтому вы можете добавить

$condition = '' + $condition

в начале, а затем используйте s() так, как вы его используете, но без дополнительных кавычек:

+media(s("(min-width: %spx)", $max-padding))

Также подсказка: есть оператор %, который работает почти так же, как s(), но может быть чище, плюс миксин apply_media_cache достаточно умен, так что фигурные скобки тоже можно опустить:

+media("min-width: %spx" % $max-padding)
person kizu    schedule 15.10.2014
comment
Спасибо за быстрый ответ и очень хорошую функцию! - person Maruf; 15.10.2014