From 07e377fa8f40e29871256068e396632557772f7c Mon Sep 17 00:00:00 2001 From: wf <2547096351@qq.com> Date: Mon, 6 May 2024 18:59:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=87=E6=B8=A1=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/main-transition/index.vue | 40 +++-------- .../components/theme-settings/index.vue | 12 ++-- src/store/modules/theme-config.ts | 2 + src/style/global-transition.scss | 71 ++++++++++++++++--- 4 files changed, 81 insertions(+), 44 deletions(-) diff --git a/src/components/main-transition/index.vue b/src/components/main-transition/index.vue index 5a5c253..3f55c45 100644 --- a/src/components/main-transition/index.vue +++ b/src/components/main-transition/index.vue @@ -1,38 +1,16 @@ - + + + diff --git a/src/layout/components/Header/components/theme-settings/index.vue b/src/layout/components/Header/components/theme-settings/index.vue index 3c3e8a7..065bcbc 100644 --- a/src/layout/components/Header/components/theme-settings/index.vue +++ b/src/layout/components/Header/components/theme-settings/index.vue @@ -42,9 +42,8 @@
页面过渡
- - 轻过渡 - 卡片 + +
@@ -58,7 +57,8 @@ import { useThemeConfig } from "@/store/modules/theme-config"; import { useThemeMethods } from "@/hooks/useThemeMethods"; const themeStore = useThemeConfig(); -const { layoutType, themeColor, presetColors, colorWeakMode, grayMode, darkMode, asideDark } = storeToRefs(themeStore); +const { layoutType, themeColor, presetColors, colorWeakMode, grayMode, darkMode, asideDark, transitionPage } = + storeToRefs(themeStore); const layoutList = reactive({ layoutDefaults: { @@ -78,6 +78,10 @@ const layoutList = reactive({ } }); +const transitions = ref([ + { value: "fadeInOut", label: "轻过渡" }, + { value: "cardInOut", label: "卡片" } +]); // 主题色设置 const themeColorChange = (value: string) => { themeColor.value = value; diff --git a/src/store/modules/theme-config.ts b/src/store/modules/theme-config.ts index 014ba37..2cabf24 100644 --- a/src/store/modules/theme-config.ts +++ b/src/store/modules/theme-config.ts @@ -18,6 +18,7 @@ interface ThemeConfig { grayMode: Boolean; colorWeakMode: Boolean; asideDark: Boolean; + transitionPage: string; themeColor: string; presetColors: Array; } @@ -49,6 +50,7 @@ export const useThemeConfig = defineStore("theme-config", { colorWeakMode: false, // 色弱模式 grayMode: false, // 灰色模式 asideDark: false, // 侧边栏深色 + transitionPage: "fadeInOut", // 页面过渡方式 themeColor: "#165DFF", // 主题色 presetColors: [ "#165DFF", diff --git a/src/style/global-transition.scss b/src/style/global-transition.scss index 590c29f..1605255 100644 --- a/src/style/global-transition.scss +++ b/src/style/global-transition.scss @@ -1,9 +1,62 @@ -/* global css transition */ -// 旋转180deg -.rotate-180 { - transform: rotate(0deg); - transition: transform 0.2s; - &:hover { - transform: rotate(180deg); - } -} +/* global css transition */ +// Transition过渡动画 + +/* 轻过渡 */ +// 进入 +.fadeInOut-enter-active { + animation: slide-enter-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; +} +// 离开 +.fadeInOut-leave-active { + animation: slide-leave-right 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; +} +@keyframes slide-enter-right { + 0% { + opacity: 0; + transform: translateX(-20px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} +@keyframes slide-leave-right { + 0% { + opacity: 1; + transform: translateX(0); + } + 100% { + opacity: 0; + transform: translateX(20px); + } +} + +/* 卡片 */ +// 进入 +.cardInOut-enter-active { + animation: slide-in-bck-center 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) both; +} +// 离开 +.cardInOut-leave-active { + animation: slide-out-bck-center 0.5s cubic-bezier(0.55, 0.085, 0.68, 0.53) both; +} +@keyframes slide-in-bck-center { + 0% { + transform: translateZ(600px); + opacity: 0; + } + 100% { + transform: translateZ(0); + opacity: 1; + } +} +@keyframes slide-out-bck-center { + 0% { + transform: translateZ(0); + opacity: 1; + } + 100% { + transform: translateZ(-1100px); + opacity: 0; + } +}