抽屉/对话框滑动方向动画 (slide.less)
来源: dialog-box, drawer
可配置变量:
--tv-motion-slide-speed 动画时长
--tv-motion-slide-opacity-mid 中间透明度
--tv-motion-slide-offset-x X轴位移 (%)
--tv-motion-slide-offset-y Y轴位移 (%)
=========================== */
@keyframes slide-left-in {
0% {
opacity: 0;
transform: translateX(var(--tv-motion-slide-offset-left));
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateX(var(--tv-motion-slide-offset-left-mid));
}
100% {
opacity: 1;
transform: translateX(0%);
}
}
@keyframes slide-left-out {
0% {
opacity: 1;
transform: translateX(0%);
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateX(var(--tv-motion-slide-offset-left-mid));
}
100% {
opacity: 0;
transform: translateX(var(--tv-motion-slide-offset-left));
}
}
@keyframes slide-right-in {
0% {
opacity: 0;
transform: translateX(var(--tv-motion-slide-offset-right));
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateX(var(--tv-motion-slide-offset-right-mid));
}
100% {
opacity: 1;
transform: translateX(0%);
}
}
@keyframes slide-right-out {
0% {
opacity: 1;
transform: translateX(0%);
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateX(var(--tv-motion-slide-offset-right-mid));
}
100% {
opacity: 0;
transform: translateX(var(--tv-motion-slide-offset-right));
}
}
@keyframes slide-top-in {
0% {
opacity: 0;
transform: translateY(var(--tv-motion-slide-offset-top));
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateY(var(--tv-motion-slide-offset-top-mid));
}
100% {
opacity: 1;
transform: translateY(0%);
}
}
@keyframes slide-top-out {
0% {
opacity: 1;
transform: translateY(0%);
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateY(var(--tv-motion-slide-offset-top-mid));
}
100% {
opacity: 0;
transform: translateY(var(--tv-motion-slide-offset-top));
}
}
@keyframes slide-bottom-in {
0% {
opacity: 0;
transform: translateY(var(--tv-motion-slide-offset-bottom));
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateY(var(--tv-motion-slide-offset-bottom-mid));
}
100% {
opacity: 1;
transform: translateY(0%);
}
}
@keyframes slide-bottom-out {
0% {
opacity: 1;
transform: translateY(0%);
}
50% {
opacity: var(--tv-motion-slide-opacity-mid);
transform: translateY(var(--tv-motion-slide-offset-bottom-mid));
}
100% {
opacity: 0;
transform: translateY(var(--tv-motion-slide-offset-bottom));
}
}