2009-09-09 53 views
5

我使用SASS生成一個@字體面混入,但這:如何在SASS中引用字符串?

=remotefont(!name, !url) 
    @font-face 
    font-family = !name 
    src = url(!url + ".eot") 
    src = local(!name), url(!url + ".ttf") format("truetype") 

+remotefont("My font", "/myfont.ttf") 

變成這樣:

@font-face { 
    font-family: My font; 
    src: url(/myfont.ttf.eot); 
    src: local(My font), url(/myfont.ttf.ttf) format(truetype); } 

不管我多麼努力,我不能擁有它的報價「我的字體」(帶「!名稱」)或「truetype」(刪除引號)。關於如何做到這一點的任何想法?

回答

6

可以做出更好一點使用字符串插值:

!name = "asdf" 
.foo 
    font-family = "\"#{!name}\"" 

但我同意我們需要一個更好的方法來處理sass中引用的字符串。 Sass有足夠的上下文在這裏做些聰明的事情,而不會將引用邏輯卸載給用戶。

2

好吧,我發現,我需要做的:

"\"" + !name + "\"" 

哎呀這是一些尷尬的語法...

5

你可以在你的變量中引用,使用單引號裏面的雙引號。這就是我要做的事:

!string = "'Myriad Pro', 'Lucida Sans', Helvetica, Arial, sans-serif" 
.foo 
    :font-family= !string 

這將正確編譯到:

.foo{ 
    font-family: 'Myriad Pro', 'Lucida Sans', Helvetica, Arial, sans-serif; } 

我認爲你不能引用另一種方式圓(單引號內即雙引號)。這樣做會給你編譯錯誤。

希望有幫助!

1

使用http://www.fontsquirrel.com/fontface/generator 我有一個相應的Sass的mixin:

=addfont(!name, !url, !family = 0) 
    @if !family == 0 
    !family = !name 
    @font-face 
    font-family = "'#{!name}'" 
    src = url(!url + ".eot") 
    src = local("'#{!name}'"), local("'#{!family}'"), url(!url + ".woff") format("'woff'"), url(!url + ".ttf") format("'truetype'"), url(!url + ".svg#" + !name) format("'svg'") 
0

這放在引號內的東西:

@font-face { 
    src: url("\"#{$ngx-font-path}/ngx-icon.eot\""); 
} 
相關問題