代码之家  ›  专栏  ›  技术社区  ›  Stavros Korokithakis

如何在sass中引用字符串?

  •  6
  • Stavros Korokithakis  · 技术社区  · 15 年前

    我正在使用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 回复  |  直到 6 年前
        1
  •  6
  •   chriseppstein    15 年前

    使用字符串插值可以使其更好一点:

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

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

        2
  •  5
  •   Vince    14 年前

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

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

    这将正确编译为:

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

    我认为你不能用另一种方式引用(即单引号内的双引号)。这样做会导致编译错误。

    希望有帮助!

        3
  •  3
  •   Stavros Korokithakis    15 年前

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

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

    该死的,这是一些笨拙的语法…

        4
  •  1
  •   Ryan Kelln    14 年前

    使用 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'")
    
        5
  •  0
  •   Devin McQueeney    6 年前

    这就引用了以下内容:

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