SCSS的关键帧动画无法正常工作

时间:2015-10-18 21:39:15

标签: jquery css animation keyframe

我是关键帧动画的新手,经过一些搜索this article似乎是一个很好的起点。

以下是codepen中的文章代码 - http://codepen.io/anon/pen/yYPxJM

@mixin keyframes($animation-name) {
  @-webkit-keyframes $animation-name {
    @content;
  }
  @-moz-keyframes $animation-name {
    @content;
  }  
  @-ms-keyframes $animation-name {
    @content;
  }
  @-o-keyframes $animation-name {
    @content;
  }  
  @keyframes $animation-name {
    @content;
  }
}

@mixin animation($str) {
  -webkit-animation: #{$str};
  -moz-animation: #{$str};
  -ms-animation: #{$str};
  -o-animation: #{$str};
  animation: #{$str};      
}

@include keyframes(slide-down) {
  0% { opacity: 1; }
  90% { opacity: 0; }
}

.element {
  width: 100px;
  height: 100px;
  background: black;
  @include animation('slide-down 5s 3');
}

然而,它没有工作"因为"而且我不确定如何继续。

当我向下滚动页面时,我将成为动画对象。例如,将一些动画设置为淡入,其他设置为缩放(调用动作)以使其弹出。 jQuery不应该是一个问题,这些动画会导致我的问题。

愿意帮助理解我未能做对的事情。

提前致谢!

2 个答案:

答案 0 :(得分:8)

您必须使用Interpolation: #{},因此您的$animation-name不会被视为CSS。

这是我最喜欢的文章:All You Ever Need to Know About Sass Interpolation

请看一下代码:

@mixin keyframes($animation-name) {
  @-webkit-keyframes #{$animation-name} {
    @content;
  }
  @-moz-keyframes #{$animation-name} {
    @content;
  }  
  @-ms-keyframes #{$animation-name} {
    @content;
  }
  @-o-keyframes #{$animation-name} {
    @content;
  }  
  @keyframes #{$animation-name} {
    @content;
  }
}

@mixin animation($str) {
  -webkit-animation: #{$str};
  -moz-animation: #{$str};
  -ms-animation: #{$str};
  -o-animation: #{$str};
  animation: #{$str};      
}

@include keyframes(slide-down) {
  0% { opacity: 1; }
  90% { opacity: 0; }
}

.element {
  width: 100px;
  height: 100px;
  background: black;
  @include animation('slide-down 5s 3');
}

答案 1 :(得分:0)

我通常使用这样的 mixin:

@mixin key_frame($name: "default_anim", $duration: 333ms, $count: infinit) {
    @keyframes default_anim {
        0% {
            bottom: -7px;
        }
        100% {
            bottom: 0;
        }
    }

    @keyframes other_anim {
        0% {
            bottom: -20px;
        }
        100% {
            bottom: 0;
        }
    }

    animation-name: $name;
    animation-duration: $duration;
    animation-iteration-count: $count;
}

然后我包括它们:

element{
   ...
   @include key_frame(your choices);
}