2012-12-12 37 views
1

是否有可能呈現SCSS任意字符串?使用#{} interpolation syntax存放在sassscript變量任意字符串?

/*source scss*/ 
$some-color: #123456; 
a {color: $some-color;} 

/*compiled css*/ 
a {color: #123456;} 

或選擇/屬性名稱:可以渲染屬性值

/*source scss*/ 
$some-class: 'my-awesome-link'; 
$some-attribute: border; 
a.#{$some-class} {#{$some-attribute}-color: #000;} 

/*compiled css*/ 
a.my-awesome-link {border-color: #000;} 

,但我不能使用以下命令:

/*source scss*/ 
$some-css: 'text-decoration:none;color:#000'; 
a {$some-css} //breaks 
a {#{$some-css}} //breaks 

這似乎是香草字符串處理和一些非常微不足道的東西。我忽略了不同的語法,還是在當前的scss中不可能?

+0

有你想這樣做比使用一個混合的一個原因? – cimmanon

+0

@cimmanon:我使用sass變量進行樣式表自定義,有時候不能輕易抽象出屬性組合。我如何用mixin來做到這一點?再次,只想渲染一個css字符串逐字。 –

+0

聽起來好像你正在接近這個問題,如果這是爲了某種可重用的庫。最好使用'@ content'感知mixin,或者只是想要覆蓋mixin。如果這是爲了主題,我甚至不會考慮這樣做。 – cimmanon

回答

4

你可以得到你想要的最接近的是這樣的:

@mixin property-list($list) { 
    @each $i in $list { 
     #{nth($i, 1)}: nth($i, 2); 
    } 
} 

$links: color red, border (1px solid); 

a { 
    @include property-list($links); 
} 

編譯爲:

a { 
    color: red; 
    border: 1px solid; 
}