想让Sass mixin更健壮(字体简写)

时间:2014-05-01 18:12:48

标签: css fonts sass mixins

仅供参考,我从来都不是Sass大师,我还在学习。

我在mixins中发现了参数的强大功能......现在我想一直使用它们:)

描述

我一直在使用网络字体,它有3个系列:常规,粗体斜体。所以我做了以下mixin:

@mixin ffArsenal($style:regular) { font-family:arsenal-+$style, Arial, "Helvetica Neue", Helvetica, sans-serif; }

我可以通过以下几种方式之一使用它:

  1. @include ffArsenal();
  2. @include ffArsenal(bold);
  3. @include ffArsenal(italic);
  4. 我得到以下输出:

    1. font-family: arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
    2. font-family: arsenal-bold, Arial, "Helvetica Neue", Helvetica, sans-serif;
    3. font-family: arsenal-italic, Arial, "Helvetica Neue", Helvetica, sans-serif;
    4. 到目前为止一切都很好,直到......

      问题

      我需要声明font-sizeline-height。如果我想这样做,我更喜欢使用字体速记样式而不是单独声明所有属性。

      因此,如果我想在字体中添加font-sizeline-height,我会这样做:

      font: 1.6rem/1.1 arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
      

      事情是,使用上述mixin,我无法使用速记。

      问题

      如何将这种字体混合成更强大的东西,可以与任何这些想法类似地使用(这些想法只是一个假设,它们显然不起作用):

      1. @include ffArsenal(); [将使用默认值]
      2. @include ffArsenal(1.1rem);
      3. @include ffArsenal(1.1rem,1.8);
      4. @include ffArsenal(1.8);
      5. 产出将是:

        1. font: 1.6rem arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif; [默认值]
        2. font: 1.1rem arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
        3. font: 1.1rem/1.8 arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
        4. font: 1.6rem/1.8 arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
        5. 目标

          当然这个案例使用的是特定的字体,但想法是这个mixin可以与任何其他字体系列一起使用,轻松地声明字体速记样式,最小化打字并最大化" DRY"。

          提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:2)

除非你想要跳过批次的箍,否则你不会得到你想要的东西(加上,使用它会很难看)。最简单的方法是使用一个函数(它看起来更像是自然的CSS):

@function arsenal($type: regular) {
    @return arsenal-#{$type}, Arial, "Helvetica Neue", Helvetica, sans-serif;
}

.foo {
    font-family: arsenal();
    font: 1.1rem arsenal();
    font: 1.1rem/1.8 arsenal();
    font: 1.1rem arsenal(bold);
}

输出:

.foo {
  font-family: arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
  font: 1.1rem arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
  font: 1.1rem/1.8 arsenal-regular, Arial, "Helvetica Neue", Helvetica, sans-serif;
  font: 1.1rem arsenal-bold, Arial, "Helvetica Neue", Helvetica, sans-serif;
}