如何在SASS中引用字符串?

时间:2009-09-09 18:17:53

标签: css ruby sass

我正在使用SASS生成@ font-face mixin,但是这个:

=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); }

无论我尝试多少,我都不能引用“我的字体”(带有“!name”)或“truetype”(它会删除引号)。关于如何做到这一点的任何想法?

5 个答案:

答案 0 :(得分:6)

使用字符串插值可以做得更好:

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

但我同意我们需要一种更好的方法来处理sass中的引用字符串。 Sass有足够的上下文在这里做一些聪明的事情,而不是将引用逻辑卸载给用户。

答案 1 :(得分: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; }

我认为你不能反过来引用(即单引号内的双引号)。这样做会给你编译错误。

希望有所帮助!

答案 2 :(得分:3)

好的,我发现我需要这样做:

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

该死的,这是一些尴尬的语法...

答案 3 :(得分: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'")

答案 4 :(得分:0)

您可以使用字符串函数quote

font-family: quote(!name)