@hellouxpavel/cssanimation
Version:
A Powerful CSS Animation Library for Advanced Motion Design.
696 lines (562 loc) • 11.7 kB
CSS
.cssanimation {
animation-duration: var(--cssanimation-duration, 1s);
animation-fill-mode: var(--cssanimation-fill-mode, both);
}
.cssanimation span {
display: var(--cssanimation-display, inline-block);
}
.infinite {
animation-iteration-count: var(--cssanimation-infinite, infinite) ;
}
@media (prefers-reduced-motion: reduce) {
.cssanimation,
.cssanimation span {
animation: none ;
transition: none ;
}
}
:root {
--cssanimation-duration: 1s;
--cssanimation-fill-mode: both;
--cssanimation-infinite: infinite;
--cssanimation-backface-visibility: hidden;
--cssanimation-transform-style: preserve-3d;
--cssanimation-will-change: transform, opacity;
--cssanimation-display: inline-block;
--move-distance: -800px;
}
/**
* Module: Swing
* Filename: ca_Swing.ca__fx-css
*/
.ca__fx-swing {
animation-name: swing;
animation-timing-function: ease-in-out;
transform-origin: top center;
}
@keyframes swing {
0% {
transform: rotate(0deg);
}
20% {
transform: rotate(15deg);
}
40% {
transform: rotate(-10deg);
}
60% {
transform: rotate(5deg);
}
80% {
transform: rotate(-3deg);
}
100% {
transform: rotate(0deg);
}
}
.ca__fx-swingIn {
animation-name: swingIn;
animation-timing-function: ease-out;
transform-origin: top center;
}
@keyframes swingIn {
0% {
transform: rotate(45deg);
opacity: 0;
}
40% {
transform: rotate(-20deg);
opacity: 1;
}
60% {
transform: rotate(10deg);
}
80% {
transform: rotate(-5deg);
}
100% {
transform: rotate(0deg);
}
}
.ca__fx-swingOut {
animation-name: swingOut;
animation-timing-function: ease-in;
transform-origin: top center;
}
@keyframes swingOut {
0% {
transform: rotate(0deg);
}
30% {
transform: rotate(10deg);
}
60% {
transform: rotate(-30deg);
}
100% {
transform: rotate(-55deg);
opacity: 0;
}
}
.ca__fx-swingUp {
animation-name: swingUp;
animation-duration: 1s;
animation-fill-mode: both;
transform-origin: bottom center;
}
@keyframes swingUp {
0% {
transform: translateY(100%) rotateX(45deg);
opacity: 0;
}
50% {
transform: translateY(-10%) rotateX(-15deg);
opacity: 1;
}
100% {
transform: translateY(0%) rotateX(0deg);
}
}
.ca__fx-swingZoom {
animation-name: swingZoom;
transform-origin: center;
}
@keyframes swingZoom {
0% {
transform: scale(0.ca__fx-8) rotate(-10deg);
opacity: 0;
}
30% {
transform: scale(1.ca__fx-05) rotate(15deg);
opacity: 1;
}
60% {
transform: scale(1) rotate(-5deg);
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-swingPop {
animation-name: swingPop;
transform-origin: center bottom;
}
@keyframes swingPop {
0% {
transform: scale(0.ca__fx-5) rotate(-20deg);
opacity: 0;
}
60% {
transform: scale(1.ca__fx-1) rotate(10deg);
opacity: 1;
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-swingSkew {
animation-name: swingSkew;
transform-origin: top left;
}
@keyframes swingSkew {
0% {
transform: skewX(0deg);
}
30% {
transform: skewX(15deg);
}
60% {
transform: skewX(-10deg);
}
100% {
transform: skewX(0deg);
}
}
.ca__fx-swingInFromRight {
animation-name: swingInFromRight;
transform-origin: bottom center;
}
@keyframes swingInFromRight {
from {
transform: rotate(45deg);
opacity: 0;
}
to {
transform: rotate(0deg);
opacity: 1;
}
}
.ca__fx-swingInFromLeft {
animation-name: swingInFromLeft;
transform-origin: bottom center;
}
@keyframes swingInFromLeft {
from {
transform: rotate(-45deg);
opacity: 0;
}
to {
transform: rotate(0deg);
opacity: 1;
}
}
.ca__fx-swingInFromTop {
animation-name: swingInFromTop;
transform-origin: top center;
}
@keyframes swingInFromTop {
from {
transform: rotateX(90deg);
transform-origin: top center;
opacity: 0;
}
to {
transform: rotateX(0deg);
transform-origin: top center;
opacity: 1;
}
}
.ca__fx-swingInFromBottom {
animation-name: swingInFromBottom;
transform-origin: bottom center;
}
@keyframes swingInFromBottom {
from {
transform: rotateX(-90deg);
transform-origin: bottom center;
opacity: 0;
}
to {
transform: rotateX(0deg);
transform-origin: bottom center;
opacity: 1;
}
}
.ca__fx-swingOutToRight {
animation-name: swingOutToRight;
transform-origin: bottom center;
}
@keyframes swingOutToRight {
from {
transform: rotate(0deg);
opacity: 1;
}
to {
transform: rotate(45deg);
opacity: 0;
}
}
.ca__fx-swingOutToLeft {
animation-name: swingOutToLeft;
transform-origin: bottom center;
}
@keyframes swingOutToLeft {
from {
transform: rotate(0deg);
opacity: 1;
}
to {
transform: rotate(-45deg);
opacity: 0;
}
}
.ca__fx-swingOutToTop {
animation-name: swingOutToTop;
transform-origin: top center;
transform-style: preserve-3d;
perspective: 1000px;
will-change: transform;
}
@keyframes swingOutToTop {
from {
transform: rotateX(0deg);
transform-origin: top center;
opacity: 1;
}
to {
transform: rotateX(90deg);
transform-origin: top center;
opacity: 0;
}
}
.ca__fx-swingOutToBottom {
animation-name: swingOutToBottom;
transform-origin: bottom center;
transform-style: preserve-3d;
perspective: 1000px;
will-change: transform;
}
@keyframes swingOutToBottom {
from {
transform: rotateX(0deg);
transform-origin: bottom center;
opacity: 1;
}
to {
transform: rotateX(-90deg);
opacity: 0;
}
}
.ca__fx-swingInFromRight {
animation-name: swingInFromRight;
transform-origin: bottom;
}
@keyframes swingInFromRight {
40% {
transform: rotate(45deg);
}
100% {
transform: rotate(0deg);
animation-timing-function: cubic-bezier(0, 0.ca__fx-9, 0.ca__fx-7, 1.ca__fx-45);
}
}
.ca__fx-swingInFromLeft {
animation-name: swingInFromLeft;
transform-origin: bottom;
}
@keyframes swingInFromLeft {
40% {
transform: rotate(-45deg);
}
100% {
transform: rotate(0deg);
animation-timing-function: cubic-bezier(0, 0.ca__fx-9, 0.ca__fx-7, 1.ca__fx-45);
}
}
.ca__fx-swingDrop {
animation-name: swingDrop;
transform-origin: top center;
}
@keyframes swingDrop {
0% {
transform: translateY(-100%) rotate(20deg);
opacity: 0;
}
40% {
transform: translateY(10%) rotate(-15deg);
opacity: 1;
}
70% {
transform: translateY(0%) rotate(5deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropSoft {
animation-name: swingDropSoft;
transform-origin: top center;
}
@keyframes swingDropSoft {
0% {
transform: translateY(-100%) rotate(15deg);
opacity: 0;
}
50% {
transform: translateY(5%) rotate(-10deg);
opacity: 1;
}
80% {
transform: translateY(-2%) rotate(5deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropHard {
animation-name: swingDropHard;
transform-origin: top center;
}
@keyframes swingDropHard {
0% {
transform: translateY(-120%) rotate(35deg);
opacity: 0;
}
40% {
transform: translateY(20%) rotate(-25deg);
opacity: 1;
}
70% {
transform: translateY(0%) rotate(10deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropBounce {
animation-name: swingDropBounce;
transform-origin: top center;
}
@keyframes swingDropBounce {
0% {
transform: translateY(-100%) rotate(15deg);
opacity: 0;
}
50% {
transform: translateY(10%) rotate(-10deg);
opacity: 1;
}
70% {
transform: translateY(-5%) rotate(5deg);
}
85% {
transform: translateY(3%) rotate(-2deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropTwist {
animation-name: swingDropTwist;
transform-origin: top center;
}
@keyframes swingDropTwist {
0% {
transform: translateY(-100%) rotate(0deg);
opacity: 0;
}
25% {
transform: translateY(30%) rotate(25deg);
opacity: 1;
}
50% {
transform: translateY(10%) rotate(-20deg);
}
75% {
transform: translateY(5%) rotate(10deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropElastic {
animation-name: swingDropElastic;
animation-timing-function: cubic-bezier(0.ca__fx-25, 1.ca__fx-5, 0.ca__fx-5, 1);
transform-origin: top center;
}
@keyframes swingDropElastic {
0% {
transform: translateY(-120%) rotate(25deg);
opacity: 0;
}
30% {
transform: translateY(15%) rotate(-20deg);
opacity: 1;
}
55% {
transform: translateY(-8%) rotate(10deg);
}
75% {
transform: translateY(4%) rotate(-5deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropChain {
animation-name: swingDropChain;
transform-origin: top center;
}
@keyframes swingDropChain {
0% {
transform: translateY(-100%) rotate(35deg);
opacity: 0;
}
30% {
transform: translateY(5%) rotate(-25deg);
opacity: 1;
}
50% {
transform: rotate(15deg);
}
70% {
transform: rotate(-8deg);
}
90% {
transform: rotate(4deg);
}
100% {
transform: rotate(0deg);
}
}
.ca__fx-swingDropHover {
animation-name: swingDropHover;
transform-origin: top center;
}
@keyframes swingDropHover {
0% {
transform: translateY(-80%) rotate(20deg);
opacity: 0;
}
60% {
transform: translateY(0%) rotate(-10deg);
opacity: 1;
}
80% {
transform: translateY(-3%) rotate(5deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropKite {
animation-name: swingDropKite;
transform-origin: top right;
}
@keyframes swingDropKite {
0% {
transform: translate(-30%, -100%) rotate(20deg);
opacity: 0;
}
40% {
transform: translate(10%, 20%) rotate(-15deg);
opacity: 1;
}
70% {
transform: translate(-5%, -5%) rotate(5deg);
}
100% {
transform: translate(0%, 0%) rotate(0deg);
}
}
.ca__fx-swingDropSnap {
animation-name: swingDropSnap;
animation-timing-function: cubic-bezier(0.ca__fx-25, 0.ca__fx-85, 0.ca__fx-5, 1.ca__fx-25);
transform-origin: top center;
}
@keyframes swingDropSnap {
0% {
transform: translateY(-90%) rotate(10deg);
opacity: 0;
}
60% {
transform: translateY(5%) rotate(-5deg);
opacity: 1;
}
100% {
transform: translateY(0%) rotate(0deg);
}
}
.ca__fx-swingDropMagnet {
animation-name: swingDropMagnet;
transform-origin: top center;
}
@keyframes swingDropMagnet {
0% {
transform: translateY(-120%) rotate(15deg);
opacity: 0;
}
50% {
transform: translateY(10%) rotate(-8deg);
opacity: 1;
}
75% {
transform: translateY(-4%) rotate(4deg);
}
90% {
transform: translateY(1%) rotate(-2deg);
}
100% {
transform: translateY(0%) rotate(0deg);
}
}