如何在手写笔中添加条件!重要

时间:2012-07-19 11:15:12

标签: stylus

我想将条件!important字符串添加到定义而不必复制行 ...到目前为止我最接近的是:

fontSize(size, isImportant = false)
  importantString=""
  if isImportant
    importantString = !important

  font-size unit(size, 'px') importantString
  font-size unit(size / 10, 'rem') importantString

不起作用,因为importantString=""实际插入"",如果未定义,删除分配实际上会打印importantString

最好的方法是:

font-size unit(size, 'px') if isImportant !important

但我想这是不可能的。

4 个答案:

答案 0 :(得分:2)

回答您的问题 - 您可以在unquote()的引号周围使用importantString,因此如果没有important则会输出为空。

看起来像这样:

fontSize(size, isImportant = false)
  importantString = isImportant ? !important : unquote("")

  font-size unit(size, 'px') importantString
  font-size unit(size / 10, 'rem') importantString

然而!如果你问我,我建议你做一些不同的 - 为font-size做一个透明的混音:

font-size(size, args...)
  $rem_ratio = 10 if not $rem_ratio is defined
  if unit(size) == 'rem'
    font-size unit(size * $rem_ratio, 'px') args
    font-size size args
  else if unit(size) == ''
    font-size unit(size, 'px') args
    font-size unit(size / $rem_ratio, 'rem') args
  else
    font-size arguments

可以透明地使用mixin,因为您可以使用通用font-size。更有甚者,有两种方法可以使用它:

.foo
  font-size 1rem

.bar
  font-size 10

您可以在那里使用rem单位,将其转换为后备中的像素,或使用无单位数字,这些数字将根据您的需要翻译成您的问题。并且重要性将被保留,您甚至可以使用rem变量来声明一个$rem_ratio中的像素数。

享受!

答案 1 :(得分:1)

可能有更清洁的解决方案,但我会选择以下内容:

fontSize(size, isImportant = false)
  if isImportant
    font-size unit(size, 'px') !important
    font-size unit(size / 10, 'rem') !important
  else
    font-size unit(size, 'px')
    font-size unit(size / 10, 'rem')

更新:替代解决方案,使用其他参数:

fontSize(size, args...)
  font-size unit(size, 'px') args
  font-size unit(size / 10, 'rem') args

用法:

p
  fontSize(12, !important)

h1
  fontSize(14)

更新:命名参数,也许更好:

fontSize(size, important = null)
  font-size unit(size, 'px') important
  font-size unit(size / 10, 'rem') important

答案 2 :(得分:0)

在“显示”中没有编译

手写笔

display block !important

的CSS

display:block

答案 3 :(得分:0)

display( arg = '' )
    if arg == 'inline-block'
        display arg
        zoom 1
        *display inline
    else if arg == 'box'
        display -moz-box
        display -webkit-box
        display box
    else
        display arg