feat: 页面卡片过渡
This commit is contained in:
parent
07e377fa8f
commit
70a5f49275
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<Transition :name="transitionPage === 'fadeIn' ? 'fadeInOut' : 'cardInOut'" mode="out-in" appear>
|
<Transition :name="transitionPage" mode="out-in" appear>
|
||||||
<!-- 向内传递插槽内容 -->
|
<!-- 向内传递插槽内容 -->
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</Transition>
|
</Transition>
|
||||||
|
|||||||
@ -4,11 +4,18 @@
|
|||||||
/* 轻过渡 */
|
/* 轻过渡 */
|
||||||
// 进入
|
// 进入
|
||||||
.fadeInOut-enter-active {
|
.fadeInOut-enter-active {
|
||||||
|
-webkit-animation: slide-enter-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
||||||
animation: slide-enter-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
animation: slide-enter-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
||||||
}
|
}
|
||||||
// 离开
|
@-webkit-keyframes slide-enter-right {
|
||||||
.fadeInOut-leave-active {
|
0% {
|
||||||
animation: slide-leave-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
opacity: 0;
|
||||||
|
transform: translateX(-20px);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@keyframes slide-enter-right {
|
@keyframes slide-enter-right {
|
||||||
0% {
|
0% {
|
||||||
@ -20,6 +27,21 @@
|
|||||||
transform: translateX(0);
|
transform: translateX(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 离开
|
||||||
|
.fadeInOut-leave-active {
|
||||||
|
-webkit-animation: slide-leave-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
||||||
|
animation: slide-leave-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
||||||
|
}
|
||||||
|
@-webkit-keyframes slide-leave-right {
|
||||||
|
0% {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(20px);
|
||||||
|
}
|
||||||
|
}
|
||||||
@keyframes slide-leave-right {
|
@keyframes slide-leave-right {
|
||||||
0% {
|
0% {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
@ -34,29 +56,75 @@
|
|||||||
/* 卡片 */
|
/* 卡片 */
|
||||||
// 进入
|
// 进入
|
||||||
.cardInOut-enter-active {
|
.cardInOut-enter-active {
|
||||||
animation: slide-in-bck-center 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
|
-webkit-animation: swing-in-top-fwd 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) both;
|
||||||
|
animation: swing-in-top-fwd 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) both;
|
||||||
|
}
|
||||||
|
@-webkit-keyframes swing-in-top-fwd {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotateX(-100deg);
|
||||||
|
transform: rotateX(-100deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotateX(0deg);
|
||||||
|
transform: rotateX(0deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes swing-in-top-fwd {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotateX(-100deg);
|
||||||
|
transform: rotateX(-100deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotateX(0deg);
|
||||||
|
transform: rotateX(0deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 离开
|
// 离开
|
||||||
.cardInOut-leave-active {
|
.cardInOut-leave-active {
|
||||||
animation: slide-out-bck-center 0.5s cubic-bezier(0.55, 0.085, 0.68, 0.53) both;
|
-webkit-animation: swing-out-top-bck 0.25s cubic-bezier(0.6, -0.28, 0.735, 0.045) both;
|
||||||
|
animation: swing-out-top-bck 0.25s cubic-bezier(0.6, -0.28, 0.735, 0.045) both;
|
||||||
}
|
}
|
||||||
@keyframes slide-in-bck-center {
|
@-webkit-keyframes swing-out-top-bck {
|
||||||
0% {
|
0% {
|
||||||
transform: translateZ(600px);
|
-webkit-transform: rotateX(0deg);
|
||||||
opacity: 0;
|
transform: rotateX(0deg);
|
||||||
}
|
-webkit-transform-origin: top;
|
||||||
100% {
|
transform-origin: top;
|
||||||
transform: translateZ(0);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes slide-out-bck-center {
|
|
||||||
0% {
|
|
||||||
transform: translateZ(0);
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
100% {
|
100% {
|
||||||
transform: translateZ(-1100px);
|
-webkit-transform: rotateX(-100deg);
|
||||||
|
transform: rotateX(-100deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes swing-out-top-bck {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotateX(0deg);
|
||||||
|
transform: rotateX(0deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotateX(-100deg);
|
||||||
|
transform: rotateX(-100deg);
|
||||||
|
-webkit-transform-origin: top;
|
||||||
|
transform-origin: top;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user