2014-09-10 76 views
3

我正在嘗試使用SASS mixin在動畫中自動使用供應商前綴。這是混入:Sass mixins沒有替換變量

@mixin keyframes($name) { 
    @-o-keyframes $name { @content }; 
    @-moz-keyframes $name { @content }; 
    @-webkit-keyframes $name { @content }; 
    @keyframes $name { @content }; 
} 

現在,如果我有這樣的:

@include keyframes(test) { 
    from { 
     opacity: 0; 
    } 
    to { 
     opacity: 1; 
    } 
} 

產生的CSS是這樣的:

@-o-keyframes $name { ... } 
@-moz-keyframes $name { ... } 
@-webkit-keyframes $name { ... } 
@keyframes $name { ... } 

SASS根本就不是$nametest更換。這是一個已知的錯誤還是有解決方法?我找不到與此問題相關的任何內容。順便說一句,我使用的是SASS 3.4.1版。

回答

7

變化$name#{$name}中混入

@mixin keyframes($name) { 
    @-o-keyframes #{$name} { @content }; 
    @-moz-keyframes #{$name} { @content }; 
    @-webkit-keyframes #{$name} { @content }; 
    @keyframes #{$name} { @content }; 
} 

Demo

+0

這工作,但它是一個錯誤嗎?文檔沒有提到這一點。 – jangxx 2014-09-10 16:29:07

+0

它實際上[是規範的一部分](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#interpolation_) – 2014-09-10 16:32:47

+3

是的,但根據文檔,它應該工作,而不必做插值: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixin-arguments(這個問題突然出現在我的項目上..你的回答解決了這個問題,但我想知道爲什麼會發生這種情況) – 2014-10-11 10:06:06