9

我正在使用 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”(它会删除引号)。关于如何做到这一点的任何想法?

4

6 回答 6

8

It can be made a little better using string interpolation:

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

But I agree that we need a better approach for dealing with quoted strings in sass. Sass has enough context to do something intelligent here and not offload the quoting logic to the user.

于 2009-09-10T19:02:00.233 回答
4

您可以在变量中引用,在双引号中使用引号。我就是这样做的:

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

这将正确编译为:

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

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

希望有帮助!

于 2010-01-29T10:01:29.223 回答
3

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

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

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

于 2009-09-09T18:25:52.563 回答
1

使用http://www.fontsquirrel.com/fontface/generator 我有一个相应的 Sass 混合:

=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'")
于 2010-03-23T05:41:24.597 回答
0

这会在事物周围加上引号:

@font-face {
  src: url("\"#{$ngx-font-path}/ngx-icon.eot\"");
}
于 2018-02-26T12:30:42.150 回答
0

您可以使用字符串函数quote

font-family: quote(!name)
于 2019-08-29T17:50:28.863 回答