-
-
Save Integralist/3931680 to your computer and use it in GitHub Desktop.
@include keyframe(fadeout) { | |
0% { | |
opacity: 1; | |
} | |
100% { | |
opacity: 0; | |
} | |
} | |
@include keyframe(changecolour) { | |
0% { | |
color: #000; | |
} | |
100% { | |
color: #FFF; | |
} | |
} |
@mixin keyframe ($animation_name) { | |
@-webkit-keyframes $animation_name { | |
@content; | |
} | |
@-moz-keyframes $animation_name { | |
@content; | |
} | |
@-o-keyframes $animation_name { | |
@content; | |
} | |
@keyframes $animation_name { | |
@content; | |
} | |
} |
/* | |
Example usage: | |
@include animation(10s, 5s, changecolour) | |
*/ | |
@mixin animation ($delay, $duration, $animation) { | |
-webkit-animation-delay: $delay; | |
-webkit-animation-duration: $duration; | |
-webkit-animation-name: $animation; | |
-webkit-animation-fill-mode: forwards; /* this prevents the animation from restarting! */ | |
-moz-animation-delay: $delay; | |
-moz-animation-duration: $duration; | |
-moz-animation-name: $animation; | |
-moz-animation-fill-mode: forwards; /* this prevents the animation from restarting! */ | |
-o-animation-delay: $delay; | |
-o-animation-duration: $duration; | |
-o-animation-name: $animation; | |
-o-animation-fill-mode: forwards; /* this prevents the animation from restarting! */ | |
animation-delay: $delay; | |
animation-duration: $duration; | |
animation-name: $animation; | |
animation-fill-mode: forwards; /* this prevents the animation from restarting! */ | |
} |
The generated CSS will have all of the prefixed animation properties duplicated in all of the keyframes blocks. For example, @-webkit-keyframes will contain -moz-animation-* properties and @-moz-keyframes will contain -webkit-animation-*. I'm sure that works, but I wonder if there's a creative way to avoid that duplication.
@awesomephant opera 12 used -o- in the same page referenced http://caniuse.com/#feat=css-animation
@Ghodmode The animation
include is not supposed to be placed in the keyframes
mixin so we shouldn't see the problem you describe.
Nonetheless, any calls like @include transform(rotate(90deg));
within the keyframes mixing will show up with all the prefixes. That's unfortunate.
Trying to use this here http://sassmeister.com/gist/8458511 but $animation-name isn't compiling properly. Any ideas?
Figured it out. With Sass you have to use #{$animation-name} to force the correct output
mds: Geez, Thank you! I've been searching for this one (#{$animation-name}
) for the last hour.
<3 this. thanks.
Why not let something like gulp-autoprefixer do the prefixing heavy-lifting for you and only insert the basic properties into the mixin?
I know this is a pretty old res, though it's missing animation-iteration-count, eg. use of infinite
I was having an error with this outputting the literal $animation_name
into the CSS. The accepted answer to this StackOverflow question resolved it for me. You might consider incorporating it into the gist.
I don't understand the examples or their relationship
Thank you very much
You don't need the
-o-
prefix here. There was literally never a browser that used it. http://caniuse.com/#feat=css-animation