SASS在多行上缩进语法?

时间:2011-11-23 20:59:16

标签: css sass

我喜欢Sass的indented syntax(与SCSS相反,SCSS是空白不可知的并且使用括号和分号)。我认为它更干净。

我有一个问题。如果我的行很长,则无法将其分成多行(例如,遵守80个字符的限制)

以一个非常长的mixin声明为例,首先用SCSS编写。

@mixin col($cols, $mleft: 0, $mright: 0, $include-margin: false, $border: 0,
           $pleft: 0, $pright: 0, $include-padding: true, $extra: 0, 
           $clear: false, $lead: true, $container: false) {
    color: red;
    display: block;
}

我能够将一个长的声明分成多行。使用缩进语法,我认为没有办法。我必须把声明放在一行,这样就不那么容易了。

@mixin col($cols, $mleft: 0, $mright: 0, $include-margin: false, $border: 0, $pleft: 0, $pright: 0, $include-padding: true, $extra: 0, $clear: false, $lead: true, $container: false)
    color: red
    display: block

有什么方法我不知道吗? :(

2 个答案:

答案 0 :(得分:3)

sass不支持Multiline。阅读文档时,有一个例外,当涉及到多个css选择器时,例如:

.users #userTab,
.posts #postTab
  width: 100px
  height: 30px

在此处阅读文档:http://sass-lang.com/docs/yardoc/file.INDENTED_SYNTAX.html#multiline_selectors

所以,遗憾的是:没有可能在sass中为参数列表获得多行支持。

答案 1 :(得分:0)

首先:不要创建包含这么多参数的mixins。将它分成许多小混合或插入一些类似的参数作为数组(Sass有数据映射)。

第二:你可以使用临时变量只是为了你的大代码的可读性。

例如:

=mixin($argument)
    body::before
        content: $argument
$v1: 'foo-'
$v2: 'bar-'
$v3: 'baz.'
$var: $v1+$v2+$v3
+mixin($var)

这样您就可以将所有$v#个字符串与一个$var联系起来。

body::before {
    content: 'foo-bar-baz';
}

如果有人知道更好的方法将多个字符串连接成一个缩进的Sass语法,我会很高兴知道。因为我用这个来编写复杂的渐变和内联生成的SVG。