如何在calc()中使用多个变量Stylus?

时间:2015-11-14 08:18:24

标签: stylus calc

一切都在标题中。我不能在函数CSS calc()中加入几个Stylus变量。

我创建了一个代码Sass,我会在Stylus下转换自己:

// *.scss

$gutter : 1rem;

.sizeXS-m10 {
    width: calc(#{100% / 12 * 10} - #{$gutter});
}

对于单个变量,没问题:

// *.styl

$gutter = 1rem

.sizeXS-m10
  width 'calc(100% / 12 * 10 - %s)' % $gutter

当尝试将此操作的结果集成到变量中时,事情变得复杂:

100% / 12 * 10

4 个答案:

答案 0 :(得分:10)

只需将值包装到括号中,如下所示:

// *.styl

$gutter = 1rem

.sizeXS-m10
  width 'calc(%s / %s * %s - %s)' % (100% 12 10 $gutter)

答案 1 :(得分:2)

她让我走上正轨:

// *.styl

$gutter = 1rem

.sizeXS-m10
  width 'calc(%s - %s)' % ((100% / 12 * 10) $gutter)

答案 2 :(得分:1)

Stylus转义计算函数的所有内容

/* .stylus */
.test1 
  $offset = 5px
  $mult = 3
  height calc(1em + $offset * $mult)
/* .css */
.test1 {
  height: calc(1em + $offset * $mult);
}

所以你可以使用类似sprintf的运算符%,但这并不是很容易阅读

/* .stylus */
.test2
  $offset = 5px
  $mult = 3
  height 'calc(1em + %s * %s)' % ($offset $mult)
/* .css */
.test2 {
  height: calc(1em + 5px * 3);
}

你可以创建一个使用calc2()的{​​{1}} mixin但是手写笔会尝试进行操作

calc()
/* .stylus */
calc2($expr...)
  'calc(%s)' % $expr
.test3
  $offset = 5px
  $mult = 3
  height calc2(1em + $offset * $mult)

所以你必须逃避所有的运营商。我认为它比sprintf语法更具可读性

/* .css */
.test3 {
  height: calc(16em);
}
/* .stylus */
calc2($expr...)
  'calc(%s)' % $expr
.test4
  $offset = 5px
  $mult = 3
  height calc2(1em \+ $offset \* $mult)

如果您愿意,可以重命名/* .css */ .test4 { height: calc(1em + 5px * 3); } mixin calc2(),这是有效的

calc()
/* .stylus */
calc($expr...)
  'calc(%s)' % $expr
.test5
  $offset = 5px
  $mult = 3
  height calc(1em \+ $offset \* $mult)

或者如果您不想创建mixin,可以将/* .css */ .test5 { height: calc(1em + 5px * 3); } 用于其他案例(例如calc()Case()

CASE()
/* .stylus */
.test6
  $offset = 5px
  $mult = 3
  height Calc(1em \+ $offset \* $mult)

答案 3 :(得分:0)

我不确定我是否正确理解了您的问题,但是您不需要针对手写笔的calc函数:

width (100% / 12 * 10) - $gutter

这就是你所要写的。

致谢