SCSS 的关键帧动画不起作用
Keyframe animations with SCSS not working
我是关键帧动画的新手,经过一番搜索后 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');
}
但是,它不起作用 "as is",我不确定如何继续。
我将在向下滚动页面时为对象设置动画。例如动画一些淡入,其他缩放(号召性用语)使它们弹出。 jQuery 应该不是问题,是这些动画导致了我的问题。
希望得到一些帮助来理解我做错了什么。
提前致谢!
您必须使用 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');
}
我通常像这样使用 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);
}
我是关键帧动画的新手,经过一番搜索后 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');
}
但是,它不起作用 "as is",我不确定如何继续。
我将在向下滚动页面时为对象设置动画。例如动画一些淡入,其他缩放(号召性用语)使它们弹出。 jQuery 应该不是问题,是这些动画导致了我的问题。
希望得到一些帮助来理解我做错了什么。
提前致谢!
您必须使用 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');
}
我通常像这样使用 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);
}