Sass 使用插值调用compass sprite Mixin

Sass 使用插值调用compass sprite Mixin,sass,compass-sass,css-sprites,mixins,Sass,Compass Sass,Css Sprites,Mixins,这种混合的问题是,我无法调用compass提供的不同的sprite混合 我希望能够在一个地方有这个,在不同的SCS中创建精灵,他们只是包括这个共享混合并使用它 到目前为止,Sass似乎不允许我这么做。也许我只是有一种疯狂而糟糕的做事方式(我不是真正的设计师,几个月前我就了解了sass) 谢谢你抽出时间 @mixin图标按钮($width、$height、$icon bg color、$icon、$sprite name){ .图标库{ 宽度:$width; 高度:$height; 背景色:$图标

这种混合的问题是,我无法调用compass提供的不同的sprite混合

我希望能够在一个地方有这个,在不同的SCS中创建精灵,他们只是包括这个共享混合并使用它

到目前为止,Sass似乎不允许我这么做。也许我只是有一种疯狂而糟糕的做事方式(我不是真正的设计师,几个月前我就了解了sass)

谢谢你抽出时间

@mixin图标按钮($width、$height、$icon bg color、$icon、$sprite name){
.图标库{
宽度:$width;
高度:$height;
背景色:$图标背景色;
.图标{
$icon height:#{$sprite name}-精灵高度(#{$icon});
$icon-width:#{$sprite-name}-精灵宽度(#{$icon});
@包括#{$sprite name}-sprite(#{$icon});
宽度:$图标宽度;
高度:$图标高度;
位置:相对位置;
左:($width-$icon width)/2;
顶部:($height-$icon height)/2;
}
}
}
这个
#{something}
是一种ruby插值方法
Compass
框架使用ruby编译器从scss/sass生成css。插值只是将一些值(变量)插入字符串的一种方式,如下所示:
将“我想说{smth}”
打印到
“我想说点什么”
irb
控制台,如果您之前定义了
smth=“something”
变量。您还可能注意到“和”之间的区别。因此,有时您希望在compass中使用以下独立函数:

headings(all) {
    color: $color;
}
要将其编译为css:

h1, h2, h3, h4, h5, h6 {
  color: #2a2a2a;
}
相反,它会抛出一个错误。为此,您需要插入函数调用:

#{headings(all)} {
    color: $color;
}
它会运行。但是如果你尝试用变量进行插值:

$color: #abc;
$color2: "#abc";

@mixin some($color) {
    color: #{$color};
}
也将抛出错误,因为在这种情况下插值输出字符串“#abc”。 如果可能的话,尽量避免在compass中使用ruby语法。 注:如果有人能提供更好的编译细节,我将不胜感激,因为我不是红宝石学家,我是pythonist

使现代化 检查此代码:

@mixin setFonting($from, $to, $size) {
    $curr: $from;
    $to: $to + 3;

    @while $curr != $to {
        h#{$curr} {
            font-size: $size;
        }
        $curr: $curr + 1;
        $size: $size + 2;
    }
}
@include setFonting(1, 3, 20px);
它汇编为:

h1 {font-size: 20px;} h2 {font-size: 22px;} h3 {font-size: 24px;} h4 {font-size: 26px;} h5 {font-size: 28px;}
如您所见,compass中的
{}
插值在用于定义选择器语句的花括号外工作