Как пользоваться!по умолчанию в Sass mixin?

у меня есть этот Сасс миксин:

@mixin micro-clearfix
    &:after,
    &:before
        content: ""
        display: table
    &:after
        clear: both
    * html &
        height: 1% !default
    *+html &
        min-height: 1% !default

к сожалению, он не компилируется, если я удалить !default в чем был бы смысл этого миксина.

сообщение об ошибке я получаю это:

Invalid CSS after "1% ": expected expression (e.g. 1px, bold), was "!default")

чего я хотел бы достичь, так это если height (или min-height) уже определен для селектора, тогда mixin должен использовать это значение, иначе он должен определить это свойство как 1%.

Я не хочу использовать zoom так вот не является допустимым свойством, и мне нравится держать мой CSS в чистоте.

Я использую !default неправильный путь?

у меня есть компас 0.12.1 и SASS 3.1.10.

2 ответов


!default предназначен для использования только при объявлении переменных:http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#variable_defaults_

то, что вы пытаетесь сделать, должно быть сделано с в CSS !important декларация, который должен использоваться в правиле вне mixin (тот, который вы хотите превалировать). Во всяком случае, используя !important обычно это не очень хорошая практика. Возможно, вы могли бы положиться на каскад или специфику.


вот как я это сделал, наконец:

@mixin micro-clearfix
    $minHeight: 1% !default
    &:after,
    &:before
        content: ""
        display: table
    &:after
        clear: both
    * html &
        height: $minHeight
    *+html &
        min-height: $minHeight