| /*  | 
|   Animation 微动画   | 
|   基于ColorUI组建库的动画模块 by 文晓港 2019年3月26日19:52:28 | 
|  */ | 
|   | 
| /* css 滤镜 控制黑白底色gif的 */ | 
| .gif-black{   | 
|   mix-blend-mode: screen;   | 
| } | 
| .gif-white{   | 
|   mix-blend-mode: multiply;  | 
| } | 
|   | 
|   | 
| /* Animation css */ | 
| [class*=animation-] { | 
|     animation-duration: .5s; | 
|     animation-timing-function: ease-out; | 
|     animation-fill-mode: both | 
| } | 
|   | 
| .animation-fade { | 
|     animation-name: fade; | 
|     animation-duration: .8s; | 
|     animation-timing-function: linear | 
| } | 
|   | 
| .animation-scale-up { | 
|     animation-name: scale-up | 
| } | 
|   | 
| .animation-scale-down { | 
|     animation-name: scale-down | 
| } | 
|   | 
| .animation-slide-top { | 
|     animation-name: slide-top | 
| } | 
|   | 
| .animation-slide-bottom { | 
|     animation-name: slide-bottom | 
| } | 
|   | 
| .animation-slide-left { | 
|     animation-name: slide-left | 
| } | 
|   | 
| .animation-slide-right { | 
|     animation-name: slide-right | 
| } | 
|   | 
| .animation-shake { | 
|     animation-name: shake | 
| } | 
|   | 
| .animation-reverse { | 
|     animation-direction: reverse | 
| } | 
|   | 
| @keyframes fade { | 
|     0% { | 
|         opacity: 0 | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1 | 
|     } | 
| } | 
|   | 
| @keyframes scale-up { | 
|     0% { | 
|         opacity: 0; | 
|         transform: scale(.2) | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1; | 
|         transform: scale(1) | 
|     } | 
| } | 
|   | 
| @keyframes scale-down { | 
|     0% { | 
|         opacity: 0; | 
|         transform: scale(1.8) | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1; | 
|         transform: scale(1) | 
|     } | 
| } | 
|   | 
| @keyframes slide-top { | 
|     0% { | 
|         opacity: 0; | 
|         transform: translateY(-100%) | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1; | 
|         transform: translateY(0) | 
|     } | 
| } | 
|   | 
| @keyframes slide-bottom { | 
|     0% { | 
|         opacity: 0; | 
|         transform: translateY(100%) | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1; | 
|         transform: translateY(0) | 
|     } | 
| } | 
|   | 
| @keyframes shake { | 
|   | 
|     0%, | 
|     100% { | 
|         transform: translateX(0) | 
|     } | 
|   | 
|     10% { | 
|         transform: translateX(-9px) | 
|     } | 
|   | 
|     20% { | 
|         transform: translateX(8px) | 
|     } | 
|   | 
|     30% { | 
|         transform: translateX(-7px) | 
|     } | 
|   | 
|     40% { | 
|         transform: translateX(6px) | 
|     } | 
|   | 
|     50% { | 
|         transform: translateX(-5px) | 
|     } | 
|   | 
|     60% { | 
|         transform: translateX(4px) | 
|     } | 
|   | 
|     70% { | 
|         transform: translateX(-3px) | 
|     } | 
|   | 
|     80% { | 
|         transform: translateX(2px) | 
|     } | 
|   | 
|     90% { | 
|         transform: translateX(-1px) | 
|     } | 
| } | 
|   | 
| @keyframes slide-left { | 
|     0% { | 
|         opacity: 0; | 
|         transform: translateX(-100%) | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1; | 
|         transform: translateX(0) | 
|     } | 
| } | 
|   | 
| @keyframes slide-right { | 
|     0% { | 
|         opacity: 0; | 
|         transform: translateX(100%) | 
|     } | 
|   | 
|     100% { | 
|         opacity: 1; | 
|         transform: translateX(0) | 
|     } | 
| } |