【问题标题】:Create mixin/function for @keyframes animation that will accept parameters for changed value为 @keyframes 动画创建 mixin/function,它将接受更改值的参数
【发布时间】:2018-12-11 05:37:07
【问题描述】:

我想在 sass 中创建 mixin/function 来自定义我的 @keyframes 动画。看起来我可以使用此代码来做到这一点,但有更好的方法吗?

https://www.sassmeister.com/gist/13a4b5d4df15ca46bd484ab5758f6de0

$animation-name: 1 !global;
@mixin animate_bg($color1, $color2) {
  $animation-name: unique-id() !global;
  @keyframes #{$animation-name} {
      0% {
          background-color: $color1;
      }
      100% {
          background-color: $color2;
      }
  }
  @content
}

@include animate_bg(#007efe, #cce5ff) {
  a.finished {
    animation-duration: 0.25s;
    animation-name: $animation-name;
  }
}

@include animate_bg(#aabbcc, #ffaabb) {
  b.finished {
    animation-duration: 0.25s;
    animation-name: $animation-name;
  }
}

生成这个 css

@keyframes uz61m5wd4 {
  0% {
    background-color: #007efe;
  }
  100% {
    background-color: #cce5ff;
  }
}
a.finished {
  animation-duration: 0.25s;
  animation-name: uz61m5wd4;
}

@keyframes uz61m5wdd {
  0% {
    background-color: #aabbcc;
  }
  100% {
    background-color: #ffaabb;
  }
}
b.finished {
  animation-duration: 0.25s;
  animation-name: uz61m5wdd;
}

【问题讨论】:

    标签: sass


    【解决方案1】:

    通过在 mixin 中包含 .finished 类来稍微缩小 SCSS。不过,不确定这是否正是您想要的。

    // mixin:
    @mixin animate_bg($color1, $color2, $class, $duration) {
      $animation-name: unique-id() !global;
    
      @keyframes #{$animation-name} {
        0% {
          background-color: $color1;
        }
        100% {
          background-color: $color2;
        }
      }
    
      .#{$class}.finished {
        animation-duration: $duration;
        animation-name: $animation-name;
      }
    }
    
    // using the mixin:
    @include animate_bg(#007efe, #cce5ff, a, .25s);
    @include animate_bg(#aabbcc, #ffaabb, b, .25s);
    

    【讨论】:

    • 我在想也许我什至可以只使用 css(而不是 sass)来做到这一点,但如果我理解正确,“@keyframes”不支持参数。所以我开始尝试使用 mixins,但我不经常使用 sass,所以我不确定我最终得到的结果是否有意义或有更简单的方法
    猜你喜欢
    • 2017-03-04
    • 2017-09-14
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2014-08-12
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多