Files
FastapiAdmin/frontend/web/src/styles/core/router-transition.scss
T
zhangtao 4112942a14 refactor: 完成项目前缀从Art到Fa的全面重构
本次提交完成了代码库中所有以Art为前缀的组件、类名、样式变量等的统一替换,改为Fa前缀,包括:
1.  替换所有ArtException、ArtDataListCard等组件引用
2.  统一样式变量名从art-*为fa-*
3.  修改配置文件、工具函数中的相关命名
4.  调整国际化文案与组件命名对齐
5.  修复部分样式和逻辑代码因命名变更导致的问题
6.  清理冗余代码与废弃的类型定义
2026-05-11 13:10:18 +08:00

108 lines
2.0 KiB
SCSS

@use "sass:map";
// === 变量区域 ===
$transition: (
// 动画持续时间
duration: 0.25s,
// 滑动动画的移动距离
distance: 15px,
// 默认缓动函数
easing: cubic-bezier(0.25, 0.1, 0.25, 1),
// 淡入淡出专用的缓动函数
fade-easing: cubic-bezier(0.4, 0, 0.6, 1)
);
// 抽取配置值函数,提高可复用性
@function transition-config($key) {
@return map.get($transition, $key);
}
// 变量简写
$duration: transition-config("duration");
$distance: transition-config("distance");
$easing: transition-config("easing");
$fade-easing: transition-config("fade-easing");
// === 动画类 ===
// 淡入淡出动画
.fade {
&-enter-active,
&-leave-active {
transition: opacity $duration $fade-easing;
will-change: opacity;
}
&-enter-from,
&-leave-to {
opacity: 0;
}
&-enter-to,
&-leave-from {
opacity: 1;
}
}
// 滑动动画通用样式
@mixin slide-transition($direction) {
$distance-x: 0;
$distance-y: 0;
@if $direction == "left" {
$distance-x: -$distance;
} @else if $direction == "right" {
$distance-x: $distance;
} @else if $direction == "top" {
$distance-y: -$distance;
} @else if $direction == "bottom" {
$distance-y: $distance;
}
&-enter-active {
transition:
opacity $duration $easing,
transform $duration $easing;
will-change: opacity, transform;
}
&-leave-active {
transition:
opacity calc($duration * 0.7) $easing,
transform calc($duration * 0.7) $easing;
will-change: opacity, transform;
}
&-enter-from {
opacity: 0;
transform: translate3d($distance-x, $distance-y, 0);
}
&-enter-to {
opacity: 1;
transform: translate3d(0, 0, 0);
}
&-leave-to {
opacity: 0;
transform: translate3d(-$distance-x, -$distance-y, 0);
}
}
// 滑动动画方向类
.slide-left {
@include slide-transition("left");
}
.slide-right {
@include slide-transition("right");
}
.slide-top {
@include slide-transition("top");
}
.slide-bottom {
@include slide-transition("bottom");
}