@hellouxpavel/cssanimation
Version:
A Powerful CSS Animation Library for Advanced Motion Design.
731 lines (606 loc) • 13.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: WOW
* Filename: ca__wow.ca__fx-css
*/
.ca__fx-blurTrailIn {
animation-name: blurTrailIn;
animation-timing-function: ease-out;
transform-origin: center;
will-change: transform, opacity;
filter: blur(8px);
}
@keyframes blurTrailIn {
0% {
transform: translateY(60%) scale(1.ca__fx-2);
filter: blur(12px);
opacity: 0;
}
80% {
filter: blur(3px);
}
100% {
transform: translateY(0%) scale(1);
filter: blur(0);
opacity: 1;
}
}
.ca__fx-blurTrailOut {
animation-name: blurTrailOut;
animation-timing-function: ease-in;
transform-origin: center;
will-change: transform, opacity;
}
@keyframes blurTrailOut {
0% {
transform: translateY(0%);
filter: blur(0);
opacity: 1;
}
100% {
transform: translateY(-60%) scale(0.ca__fx-95);
filter: blur(10px);
opacity: 0;
}
}
.ca__fx-layerPeelIn {
animation-name: layerPeelIn;
animation-timing-function: ease-out;
transform-origin: top left;
will-change: transform, opacity;
perspective: 800px;
}
@keyframes layerPeelIn {
0% {
transform: rotateX(-90deg) translateY(-100%);
opacity: 0;
}
60% {
transform: rotateX(20deg);
opacity: 1;
}
100% {
transform: rotateX(0deg) translateY(0%);
}
}
.ca__fx-layerPeelOut {
animation-name: layerPeelOut;
animation-timing-function: ease-in;
transform-origin: bottom right;
will-change: transform, opacity;
perspective: 800px;
}
@keyframes layerPeelOut {
0% {
transform: rotateX(0deg);
opacity: 1;
}
100% {
transform: rotateX(90deg) translateY(100%);
opacity: 0;
}
}
.ca__fx-squishPop {
animation-name: squishPop;
animation-timing-function: cubic-bezier(0.ca__fx-25, 1.ca__fx-25, 0.ca__fx-5, 1.ca__fx-2);
animation-direction: normal;
will-change: transform, opacity;
}
@keyframes squishPop {
0% {
transform: scale(0.ca__fx-2, 1.ca__fx-6);
opacity: 0;
}
60% {
transform: scale(1.ca__fx-3, 0.ca__fx-7);
opacity: 1;
}
100% {
transform: scale(1, 1);
}
}
.ca__fx-gravityPullIn {
animation-name: gravityPullIn;
animation-timing-function: ease-out;
will-change: transform, opacity;
}
@keyframes gravityPullIn {
0% {
transform: scale(2) translateY(-100%) rotate(-10deg);
opacity: 0;
}
80% {
transform: scale(1.ca__fx-05) translateY(0%) rotate(2deg);
opacity: 1;
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-slinkyStretch {
animation-name: slinkyStretch;
animation-timing-function: cubic-bezier(0.ca__fx-3, 1.ca__fx-5, 0.ca__fx-5, 1);
will-change: transform, opacity;
}
@keyframes slinkyStretch {
0% {
transform: scaleY(0.ca__fx-2);
opacity: 0;
}
50% {
transform: scaleY(1.ca__fx-3);
opacity: 1;
}
100% {
transform: scaleY(1);
}
}
.ca__fx-wobbleEntry {
animation-name: wobbleEntry;
animation-timing-function: ease-out;
will-change: transform, opacity;
}
@keyframes wobbleEntry {
0% {
transform: rotate(-30deg) scale(0.ca__fx-5);
opacity: 0;
}
40% {
transform: rotate(15deg) scale(1.ca__fx-05);
opacity: 1;
}
70% {
transform: rotate(-8deg);
}
100% {
transform: rotate(0deg) scale(1);
}
}
.ca__fx-peelDropIn {
animation-name: peelDropIn;
animation-timing-function: ease-out;
will-change: transform, opacity;
transform-origin: top left;
perspective: 800px;
}
@keyframes peelDropIn {
0% {
transform: rotateX(-80deg) rotateZ(-10deg) translateY(-100%);
opacity: 0;
}
80% {
transform: rotateX(15deg) rotateZ(3deg);
opacity: 1;
}
100% {
transform: rotateX(0) rotateZ(0) translateY(0);
}
}
.ca__fx-vibeInPop {
animation-name: vibeInPop;
animation-timing-function: ease-out;
will-change: transform, opacity;
transform-origin: center;
}
@keyframes vibeInPop {
0% {
transform: scale(0.ca__fx-4) rotate(-15deg);
filter: brightness(1.ca__fx-8);
opacity: 0;
}
40% {
transform: scale(1.ca__fx-05) rotate(5deg);
filter: brightness(1);
opacity: 1;
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-flickerPop {
animation-name: flickerPop;
animation-timing-function: ease-out;
will-change: transform, opacity;
}
@keyframes flickerPop {
0% {
opacity: 0;
transform: scale(0.ca__fx-6);
filter: brightness(0);
}
25% {
opacity: 1;
filter: brightness(2);
}
30% {
filter: brightness(0.ca__fx-4);
}
50% {
filter: brightness(1);
}
100% {
transform: scale(1);
filter: none;
}
}
.ca__fx-inertiaSlideIn {
animation-name: inertiaSlideIn;
animation-timing-function: cubic-bezier(0.ca__fx-15, 0.ca__fx-85, 0.ca__fx-3, 1.ca__fx-2);
will-change: transform, opacity;
transform-origin: left center;
}
@keyframes inertiaSlideIn {
0% {
transform: translateX(-120%) scaleX(1.ca__fx-4);
opacity: 0;
}
60% {
transform: translateX(10%) scaleX(0.ca__fx-95);
opacity: 1;
}
100% {
transform: translateX(0%) scaleX(1);
}
}
.ca__fx-dropSpinIn {
animation-name: dropSpinIn;
animation-timing-function: ease-out;
transform-origin: top center;
will-change: transform, opacity;
}
@keyframes dropSpinIn {
0% {
transform: rotateZ(-180deg) translateY(-200%);
opacity: 0;
}
60% {
transform: rotateZ(20deg) translateY(10%);
opacity: 1;
}
100% {
transform: rotateZ(0deg) translateY(0%);
}
}
.ca__fx-breezeLift {
animation-name: breezeLift;
animation-timing-function: ease-in-out;
will-change: transform, opacity;
transform-origin: center;
}
@keyframes breezeLift {
0% {
transform: translateY(40%) rotate(-3deg);
opacity: 0;
}
50% {
transform: translateY(-5%) rotate(2deg);
}
100% {
transform: translateY(0%) rotate(0deg);
opacity: 1;
}
}
.ca__fx-featherFloat {
animation-name: featherFloat;
animation-timing-function: ease-out;
transform-origin: center;
will-change: transform, opacity;
}
@keyframes featherFloat {
0% {
transform: translateY(-120%) rotate(0deg);
opacity: 0;
}
40% {
transform: translateY(10%) rotate(10deg);
opacity: 1;
}
80% {
transform: translateY(0%) rotate(-2deg);
}
100% {
transform: rotate(0deg);
}
}
.ca__fx-powerUpPop {
animation-name: powerUpPop;
animation-timing-function: ease-out;
transform-origin: center;
will-change: transform, opacity;
}
@keyframes powerUpPop {
0% {
transform: scale(0.ca__fx-3);
filter: hue-rotate(180deg) brightness(2);
opacity: 0;
}
50% {
transform: scale(1.ca__fx-2);
filter: hue-rotate(90deg);
opacity: 1;
}
100% {
transform: scale(1);
filter: none;
}
}
.ca__fx-levelUnlock {
animation-name: levelUnlock;
animation-timing-function: ease-in-out;
will-change: transform, opacity;
transform-origin: center;
}
@keyframes levelUnlock {
0% {
transform: scale(0.ca__fx-8) rotateX(90deg);
opacity: 0;
}
50% {
transform: scale(1.ca__fx-2) rotateX(-30deg);
opacity: 1;
}
100% {
transform: scale(1) rotateX(0deg);
}
}
.ca__fx-softPulseIdle {
animation-name: softPulseIdle;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
transform-origin: center;
}
@keyframes softPulseIdle {
0%,
100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.ca__fx-05);
opacity: 0.ca__fx-95;
}
}
.ca__fx-shimmerWaveIdle {
animation-name: shimmerWaveIdle;
animation-duration: 3s;
animation-timing-function: linear;
animation-iteration-count: infinite;
background: linear-gradient(
90deg,
rgba(255, 255, 255, 0) 0%,
rgba(255, 255, 255, 0.ca__fx-3) 50%,
rgba(255, 255, 255, 0) 100%
);
background-size: 200% 100%;
background-clip: text;
-webkit-background-clip: text;
color: transparent;
}
@keyframes shimmerWaveIdle {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
.ca__fx-gearSnapIn {
animation-name: gearSnapIn;
animation-timing-function: cubic-bezier(0.ca__fx-3, 1.ca__fx-6, 0.ca__fx-6, 1);
transform-origin: center;
will-change: transform, opacity;
}
@keyframes gearSnapIn {
0% {
transform: scale(0.ca__fx-6) rotate(-90deg);
opacity: 0;
}
40% {
transform: scale(1.ca__fx-1) rotate(30deg);
opacity: 1;
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-joyBounceIn {
animation-name: joyBounceIn;
animation-timing-function: ease-out;
transform-origin: center;
will-change: transform, opacity;
}
@keyframes joyBounceIn {
0% {
transform: scale(0.ca__fx-4) rotate(-15deg);
opacity: 0;
}
30% {
transform: scale(1.ca__fx-2) rotate(10deg);
opacity: 1;
}
60% {
transform: scale(0.ca__fx-95) rotate(-5deg);
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-blushSlideIn {
animation-name: blushSlideIn;
animation-timing-function: ease-out;
transform-origin: bottom center;
will-change: transform, opacity;
}
@keyframes blushSlideIn {
0% {
transform: translateY(100%) scale(0.ca__fx-9) rotate(-6deg);
opacity: 0;
}
70% {
transform: translateY(-4%) scale(1.ca__fx-05) rotate(3deg);
opacity: 1;
}
100% {
transform: translateY(0%) scale(1) rotate(0deg);
}
}
.ca__fx-stampSmash {
animation-name: stampSmash;
animation-timing-function: cubic-bezier(0.ca__fx-25, 1.ca__fx-8, 0.ca__fx-4, 1);
will-change: transform, opacity;
transform-origin: center;
}
@keyframes stampSmash {
0% {
transform: scale(2.ca__fx-4) rotate(15deg);
opacity: 0;
}
60% {
transform: scale(0.ca__fx-85) rotate(-8deg);
opacity: 1;
}
100% {
transform: scale(1) rotate(0deg);
}
}
.ca__fx-comboLevelRise {
animation-name: comboLevelRise;
animation-timing-function: ease-out;
will-change: transform, opacity;
transform-origin: bottom center;
}
@keyframes comboLevelRise {
0% {
transform: translateY(40%) scale(0.ca__fx-8) rotateX(40deg);
opacity: 0;
}
60% {
transform: translateY(-8%) scale(1.ca__fx-1) rotateX(-10deg);
opacity: 1;
}
100% {
transform: translateY(0%) scale(1) rotateX(0deg);
}
}
.ca__fx-wiggleReactive {
animation-name: wiggleReactive;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
transform-origin: center;
}
@keyframes wiggleReactive {
0%,
100% {
transform: rotate(0deg);
}
25% {
transform: rotate(4deg);
}
50% {
transform: rotate(-4deg);
}
75% {
transform: rotate(2deg);
}
}
.ca__fx-pulseGlow {
animation-name: pulseGlow;
animation-timing-function: ease-in-out;
box-shadow: 0 0 0 rgba(255, 255, 255, 0.ca__fx-4);
}
@keyframes pulseGlow {
0% {
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.ca__fx-4);
}
70% {
box-shadow: 0 0 0 12px rgba(255, 255, 255, 0);
}
100% {
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
}
}
.ca__fx-cosmicReveal {
animation-name: cosmicReveal;
animation-timing-function: ease-out;
transform-origin: center;
will-change: transform, opacity;
filter: blur(6px) brightness(2);
}
@keyframes cosmicReveal {
0% {
transform: scale(1.ca__fx-8);
filter: blur(10px) brightness(4);
opacity: 0;
}
70% {
filter: blur(1px);
opacity: 1;
}
100% {
transform: scale(1);
filter: none;
}
}
.ca__fx-scribbleGlowIn {
animation-name: scribbleGlowIn;
animation-timing-function: ease-out;
will-change: transform, opacity;
filter: blur(5px);
}
@keyframes scribbleGlowIn {
0% {
transform: scale(1.ca__fx-4) rotate(-5deg);
opacity: 0;
filter: blur(8px);
}
100% {
transform: scale(1) rotate(0);
opacity: 1;
filter: none;
}
}
.ca__fx-panelUnfold {
animation-name: panelUnfold;
animation-timing-function: ease-out;
will-change: transform, opacity;
transform-origin: top center;
}
@keyframes panelUnfold {
0% {
transform: scaleY(0.ca__fx-2) rotateX(-90deg);
opacity: 0;
}
60% {
transform: scaleY(1.ca__fx-05) rotateX(10deg);
opacity: 1;
}
100% {
transform: scaleY(1) rotateX(0);
}
}