0
我正在嘗試編寫一個重複字符串作爲選擇器的一部分的mixin。我希望的輸出是非常空白敏感的,但我找不到一個沒有引入空白的SASS編譯方式。用SASS @ while循環產生無空白的CSS字符串
所需的輸出將是:
body:nth-child(n):nth-child(n){
background: blue;
}
body:nth-child(n){
background: green;
}
body {
background: red;
}
而且我想用這個調用來實現它:
body {
@include increase-specificity(2){
background: blue;
}
@include increase-specificity{
background: green;
}
background: red;
}
的問題是,:nth-child(n)
串不能接受當前選擇器(&
)之後的任何空格,或者重複之間的任何空格,之後不更改功能CSS - 而且我不能找到一種編寫mixin的方法來實現這一點,而不會導致SASS錯誤。
這是怎麼了,我想表達的mixin:
@mixin increase-specificity($depth: 1){
&@while($depth > 0){#{'nth-child(n)'}$depth: $depth-1}{
@content;
}
}
And here's a Codepen to show it breaking。
我的問題到目前爲止是:
- SASS不會容忍
@while
環緊隨其後&
(&@while{
...),但我想不出任何其他方式來避免編譯之間的空白字符串。同樣的,我找不到一種方式來編寫一個功能@while
循環,而不用自由空白:當前語法到達插補器的末尾時(#{…}
)(不知道爲什麼)去除插值會導致它跳到試圖解釋nth-child
的parens。
我懷疑解析錯誤是因爲*失蹤的空白,這是擺在首位的問題* - 不能沒有它簡潔地表達 - 但不匹配的括號給我一個位。邏輯看起來不錯(我一直認爲Ruby的觀點是你不必做變量賦值和冗長的連接等 - 但是那麼我想你需要空格!),但我會聽取你的意見 - 謝謝爲工作解決方案! – Barney
Sass不是Ruby,它只是一個用Ruby編寫的解析器。 – cimmanon
你是對的 - 相似之處是偶然的,而不是指示性的。 – Barney