203 lines
3.0 KiB
SCSS
203 lines
3.0 KiB
SCSS
// ============================================
|
|
// 榴莲认种管理后台 - 动画定义
|
|
// ============================================
|
|
|
|
@use 'variables' as *;
|
|
|
|
// 淡入动画
|
|
@keyframes fadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
// 淡出动画
|
|
@keyframes fadeOut {
|
|
from {
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
// 向上滑入
|
|
@keyframes slideInUp {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
// 向下滑入
|
|
@keyframes slideInDown {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
}
|
|
|
|
// 向左滑入
|
|
@keyframes slideInLeft {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(-20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
// 向右滑入
|
|
@keyframes slideInRight {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(20px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
// 缩放进入
|
|
@keyframes scaleIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
// 缩放退出
|
|
@keyframes scaleOut {
|
|
from {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
transform: scale(0.95);
|
|
}
|
|
}
|
|
|
|
// 弹跳动画
|
|
@keyframes bounce {
|
|
0%, 100% {
|
|
transform: translateY(0);
|
|
}
|
|
50% {
|
|
transform: translateY(-5px);
|
|
}
|
|
}
|
|
|
|
// 脉冲动画
|
|
@keyframes pulse {
|
|
0% {
|
|
opacity: 1;
|
|
}
|
|
50% {
|
|
opacity: 0.5;
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
// 旋转动画
|
|
@keyframes spin {
|
|
from {
|
|
transform: rotate(0deg);
|
|
}
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
// 摇晃动画
|
|
@keyframes shake {
|
|
0%, 100% {
|
|
transform: translateX(0);
|
|
}
|
|
10%, 30%, 50%, 70%, 90% {
|
|
transform: translateX(-5px);
|
|
}
|
|
20%, 40%, 60%, 80% {
|
|
transform: translateX(5px);
|
|
}
|
|
}
|
|
|
|
// 骨架屏闪烁
|
|
@keyframes shimmer {
|
|
0% {
|
|
background-position: -200% 0;
|
|
}
|
|
100% {
|
|
background-position: 200% 0;
|
|
}
|
|
}
|
|
|
|
// 动画类
|
|
.animate-fadeIn {
|
|
animation: fadeIn $duration-base $ease-out;
|
|
}
|
|
|
|
.animate-fadeOut {
|
|
animation: fadeOut $duration-base $ease-in;
|
|
}
|
|
|
|
.animate-slideInUp {
|
|
animation: slideInUp $duration-base $ease-out;
|
|
}
|
|
|
|
.animate-slideInDown {
|
|
animation: slideInDown $duration-base $ease-out;
|
|
}
|
|
|
|
.animate-slideInLeft {
|
|
animation: slideInLeft $duration-base $ease-out;
|
|
}
|
|
|
|
.animate-slideInRight {
|
|
animation: slideInRight $duration-base $ease-out;
|
|
}
|
|
|
|
.animate-scaleIn {
|
|
animation: scaleIn $duration-fast $ease-out;
|
|
}
|
|
|
|
.animate-scaleOut {
|
|
animation: scaleOut $duration-fast $ease-in;
|
|
}
|
|
|
|
.animate-bounce {
|
|
animation: bounce 1s infinite;
|
|
}
|
|
|
|
.animate-pulse {
|
|
animation: pulse 2s infinite;
|
|
}
|
|
|
|
.animate-spin {
|
|
animation: spin 1s linear infinite;
|
|
}
|
|
|
|
.animate-shake {
|
|
animation: shake 0.5s ease-in-out;
|
|
}
|