From 36040c25e6d97dd3e91bda4a57a35adb2f6ca974 Mon Sep 17 00:00:00 2001 From: admin_gitea Date: Tue, 4 Aug 2026 08:24:29 +0800 Subject: [PATCH] style: align public motion with original Home-Vue --- src/components/Admin.vue | 2 +- src/components/Home.vue | 93 ++++++++++++----------------------- src/components/Login.vue | 2 +- src/components/VisitTimer.vue | 4 +- src/components/Website.vue | 28 +++++------ src/composables/useTheme.js | 19 ++----- src/style.less | 58 ++-------------------- 7 files changed, 56 insertions(+), 150 deletions(-) diff --git a/src/components/Admin.vue b/src/components/Admin.vue index 2da958b..5854482 100644 --- a/src/components/Admin.vue +++ b/src/components/Admin.vue @@ -28,7 +28,7 @@ diff --git a/src/components/Home.vue b/src/components/Home.vue index 3151870..6b5c250 100644 --- a/src/components/Home.vue +++ b/src/components/Home.vue @@ -6,33 +6,20 @@ type="button" aria-label="查看关于信息" @click="showAbout = true" - v-motion - :initial="{ opacity: 0, y: 18, scale: 0.72 }" - :enter="{ opacity: 1, y: 0, scale: 1, transition: { duration: prefersReducedMotion ? 0 : 360, delay: prefersReducedMotion ? 0 : 30 } }" + v-motion-pop > - 在线 + 在线中 -
+

Hi,

I'm {{ userName }}

-
+

正在加载主页...

@@ -45,9 +32,7 @@
diff --git a/src/components/VisitTimer.vue b/src/components/VisitTimer.vue index ee4a334..2de7d82 100644 --- a/src/components/VisitTimer.vue +++ b/src/components/VisitTimer.vue @@ -3,7 +3,7 @@
@@ -138,7 +138,7 @@ const toggleCalendar = () => { bottom: 50px; padding: 8px 15px; border-radius: 20px; - transition: transform var(--motion-base) var(--motion-ease), box-shadow var(--motion-base) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease-standard); + transition: all 0.3s ease; cursor: pointer; &:hover { diff --git a/src/components/Website.vue b/src/components/Website.vue index 6b30976..e66f14a 100644 --- a/src/components/Website.vue +++ b/src/components/Website.vue @@ -8,13 +8,12 @@
{{ site.name }} @@ -75,35 +74,32 @@ onUnmounted(() => swiperInstance?.destroy(true, true)) diff --git a/src/composables/useTheme.js b/src/composables/useTheme.js index ef3a090..607c2f4 100644 --- a/src/composables/useTheme.js +++ b/src/composables/useTheme.js @@ -22,22 +22,9 @@ export const initializeTheme = () => { export const useTheme = () => { initializeTheme() - const toggleTheme = (event) => { - const updateTheme = () => { - applyTheme(!isDarkMode.value) - localStorage.setItem('darkMode', String(isDarkMode.value)) - } - const reducedMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches - if (!document.startViewTransition || reducedMotion) { - updateTheme() - return - } - - const originX = Number.isFinite(event?.clientX) && event.clientX > 0 ? event.clientX : window.innerWidth / 2 - const originY = Number.isFinite(event?.clientY) && event.clientY > 0 ? event.clientY : window.innerHeight / 2 - document.documentElement.style.setProperty('--theme-origin-x', `${originX}px`) - document.documentElement.style.setProperty('--theme-origin-y', `${originY}px`) - document.startViewTransition(updateTheme) + const toggleTheme = () => { + applyTheme(!isDarkMode.value) + localStorage.setItem('darkMode', String(isDarkMode.value)) } return { diff --git a/src/style.less b/src/style.less index 6384fe7..6f3f7ea 100644 --- a/src/style.less +++ b/src/style.less @@ -22,11 +22,8 @@ --motion-fast: 160ms; --motion-base: 240ms; --motion-emphasis: 360ms; - --motion-theme: 420ms; --motion-ease: cubic-bezier(0.22, 1, 0.36, 1); --motion-ease-standard: cubic-bezier(0.4, 0, 0.2, 1); - --theme-origin-x: 50vw; - --theme-origin-y: 50vh; --background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxOTInIGhlaWdodD0nMTkyJyB2aWV3Qm94PScwIDAgMTkyIDE5Mic+PHBhdGggZmlsbD0nI2QzZDNkMycgZmlsbC1vcGFjaXR5PScwLjUnIGQ9J00xOTIgMTV2MmExMSAxMSAwIDAgMC0xMSAxMWMwIDEuOTQgMS4xNiA0Ljc1IDIuNTMgNi4xMWwyLjM2IDIuMzZhNi45MyA2LjkzIDAgMCAxIDEuMjIgNy41NmwtLjQzLjg0YTguMDggOC4wOCAwIDAgMS02LjY2IDQuMTNIMTQ1djM1LjAyYTYuMSA2LjEgMCAwIDAgMy4wMyA0Ljg3bC44NC40M2MxLjU4Ljc5IDQgLjQgNS4yNC0uODVsMi4zNi0yLjM2YTEyLjA0IDEyLjA0IDAgMCAxIDcuNTEtMy4xMSAxMyAxMyAwIDEgMSAuMDIgMjYgMTIgMTIgMCAwIDEtNy41My0zLjExbC0yLjM2LTIuMzZhNC45MyA0LjkzIDAgMCAwLTUuMjQtLjg1bC0uODQuNDNhNi4xIDYuMSAwIDAgMC0zLjAzIDQuODdWMTQzaDM1LjAyYTguMDggOC4wOCAwIDAgMSA2LjY2IDQuMTNsLjQzLjg0YTYuOTEgNi45MSAwIDAgMS0xLjIyIDcuNTZsLTIuMzYgMi4zNkExMC4wNiAxMC4wNiAwIDAgMCAxODEgMTY0YTExIDExIDAgMCAwIDExIDExdjJhMTMgMTMgMCAwIDEtMTMtMTMgMTIgMTIgMCAwIDEgMy4xMS03LjUzbDIuMzYtMi4zNmE0LjkzIDQuOTMgMCAwIDAgLjg1LTUuMjRsLS40My0uODRhNi4xIDYuMSAwIDAgMC00Ljg3LTMuMDNIMTQ1djM1LjAyYTguMDggOC4wOCAwIDAgMS00LjEzIDYuNjZsLS44NC40M2E2LjkxIDYuOTEgMCAwIDEtNy41Ni0xLjIybC0yLjM2LTIuMzZBMTAuMDYgMTAuMDYgMCAwIDAgMTI0IDE4MWExMSAxMSAwIDAgMC0xMSAxMWgtMmExMyAxMyAwIDAgMSAxMy0xM2MyLjQ3IDAgNS43OSAxLjM3IDcuNTMgMy4xMWwyLjM2IDIuMzZhNC45NCA0Ljk0IDAgMCAwIDUuMjQuODVsLjg0LS40M2E2LjEgNi4xIDAgMCAwIDMuMDMtNC44N1YxNDVoLTM1LjAyYTguMDggOC4wOCAwIDAgMS02LjY2LTQuMTNsLS40My0uODRhNi45MSA2LjkxIDAgMCAxIDEuMjItNy41NmwyLjM2LTIuMzZBMTAuMDYgMTAuMDYgMCAwIDAgMTA3IDEyNGExMSAxMSAwIDAgMC0yMiAwYzAgMS45NCAxLjE2IDQuNzUgMi41MyA2LjExbDIuMzYgMi4zNmE2LjkzIDYuOTMgMCAwIDEgMS4yMiA3LjU2bC0uNDMuODRhOC4wOCA4LjA4IDAgMCAxLTYuNjYgNC4xM0g0OXYzNS4wMmE2LjEgNi4xIDAgMCAwIDMuMDMgNC44N2wuODQuNDNjMS41OC43OSA0IC40IDUuMjQtLjg1bDIuMzYtMi4zNmExMi4wNCAxMi4wNCAwIDAgMSA3LjUxLTMuMTFBMTMgMTMgMCAwIDEgODEgMTkyaC0yYTExIDExIDAgMCAwLTExLTExYy0xLjk0IDAtNC43NSAxLjE2LTYuMTEgMi41M2wtMi4zNiAyLjM2YTYuOTMgNi45MyAwIDAgMS03LjU2IDEuMjJsLS44NC0uNDNhOC4wOCA4LjA4IDAgMCAxLTQuMTMtNi42NlYxNDVIMTEuOThhNi4xIDYuMSAwIDAgMC00Ljg3IDMuMDNsLS40My44NGMtLjc5IDEuNTgtLjQgNCAuODUgNS4yNGwyLjM2IDIuMzZhMTIuMDQgMTIuMDQgMCAwIDEgMy4xMSA3LjUxQTEzIDEzIDAgMCAxIDAgMTc3di0yYTExIDExIDAgMCAwIDExLTExYzAtMS45NC0xLjE2LTQuNzUtMi41My02LjExbC0yLjM2LTIuMzZhNi45MyA2LjkzIDAgMCAxLTEuMjItNy41NmwuNDMtLjg0YTguMDggOC4wOCAwIDAgMSA2LjY2LTQuMTNINDd2LTM1LjAyYTYuMSA2LjEgMCAwIDAtMy4wMy00Ljg3bC0uODQtLjQzYy0xLjU5LS44LTQtLjQtNS4yNC44NWwtMi4zNiAyLjM2QTEyIDEyIDAgMCAxIDI4IDEwOWExMyAxMyAwIDEgMSAwLTI2YzIuNDcgMCA1Ljc5IDEuMzcgNy41MyAzLjExbDIuMzYgMi4zNmE0Ljk0IDQuOTQgMCAwIDAgNS4yNC44NWwuODQtLjQzQTYuMSA2LjEgMCAwIDAgNDcgODQuMDJWNDlIMTEuOThhOC4wOCA4LjA4IDAgMCAxLTYuNjYtNC4xM2wtLjQzLS44NGE2LjkxIDYuOTEgMCAwIDEgMS4yMi03LjU2bDIuMzYtMi4zNkExMC4wNiAxMC4wNiAwIDAgMCAxMSAyOCAxMSAxMSAwIDAgMCAwIDE3di0yYTEzIDEzIDAgMCAxIDEzIDEzYzAgMi40Ny0xLjM3IDUuNzktMy4xMSA3LjUzbC0yLjM2IDIuMzZhNC45NCA0Ljk0IDAgMCAwLS44NSA1LjI0bC40My44NEE2LjEgNi4xIDAgMCAwIDExLjk4IDQ3SDQ3VjExLjk4YTguMDggOC4wOCAwIDAgMSA0LjEzLTYuNjZsLjg0LS40M2E2LjkxIDYuOTEgMCAwIDEgNy41NiAxLjIybDIuMzYgMi4zNkExMC4wNiAxMC4wNiAwIDAgMCA2OCAxMSAxMSAxMSAwIDAgMCA3OSAwaDJhMTMgMTMgMCAwIDEtMTMgMTMgMTIgMTIgMCAwIDEtNy41My0zLjExbC0yLjM2LTIuMzZhNC45MyA0LjkzIDAgMCAwLTUuMjQtLjg1bC0uODQuNDNBNi4xIDYuMSAwIDAgMCA0OSAxMS45OFY0N2gzNS4wMmE4LjA4IDguMDggMCAwIDEgNi42NiA0LjEzbC40My44NGE2LjkxIDYuOTEgMCAwIDEtMS4yMiA3LjU2bC0yLjM2IDIuMzZBMTAuMDYgMTAuMDYgMCAwIDAgODUgNjhhMTEgMTEgMCAwIDAgMjIgMGMwLTEuOTQtMS4xNi00Ljc1LTIuNTMtNi4xMWwtMi4zNi0yLjM2YTYuOTMgNi45MyAwIDAgMS0xLjIyLTcuNTZsLjQzLS44NGE4LjA4IDguMDggMCAwIDEgNi42Ni00LjEzSDE0M1YxMS45OGE2LjEgNi4xIDAgMCAwLTMuMDMtNC44N2wtLjg0LS40M2MtMS41OS0uOC00LS40LTUuMjQuODVsLTIuMzYgMi4zNkExMiAxMiAwIDAgMSAxMjQgMTNhMTMgMTMgMCAwIDEtMTMtMTNoMmExMSAxMSAwIDAgMCAxMSAxMWMxLjk0IDAgNC43NS0xLjE2IDYuMTEtMi41M2wyLjM2LTIuMzZhNi45MyA2LjkzIDAgMCAxIDcuNTYtMS4yMmwuODQuNDNhOC4wOCA4LjA4IDAgMCAxIDQuMTMgNi42NlY0N2gzNS4wMmE2LjEgNi4xIDAgMCAwIDQuODctMy4wM2wuNDMtLjg0Yy44LTEuNTkuNC00LS44NS01LjI0bC0yLjM2LTIuMzZBMTIgMTIgMCAwIDEgMTc5IDI4YTEzIDEzIDAgMCAxIDEzLTEzek04NC4wMiAxNDNhNi4xIDYuMSAwIDAgMCA0Ljg3LTMuMDNsLjQzLS44NGMuOC0xLjU5LjQtNC0uODUtNS4yNGwtMi4zNi0yLjM2QTEyIDEyIDAgMCAxIDgzIDEyNGExMyAxMyAwIDEgMSAyNiAwYzAgMi40Ny0xLjM3IDUuNzktMy4xMSA3LjUzbC0yLjM2IDIuMzZhNC45NCA0Ljk0IDAgMCAwLS44NSA1LjI0bC40My44NGE2LjEgNi4xIDAgMCAwIDQuODcgMy4wM0gxNDN2LTM1LjAyYTguMDggOC4wOCAwIDAgMSA0LjEzLTYuNjZsLjg0LS40M2E2LjkxIDYuOTEgMCAwIDEgNy41NiAxLjIybDIuMzYgMi4zNkExMC4wNiAxMC4wNiAwIDAgMCAxNjQgMTA3YTExIDExIDAgMCAwIDAtMjJjLTEuOTQgMC00Ljc1IDEuMTYtNi4xMSAyLjUzbC0yLjM2IDIuMzZhNi45MyA2LjkzIDAgMCAxLTcuNTYgMS4yMmwtLjg0LS40M2E4LjA4IDguMDggMCAwIDEtNC4xMy02LjY2VjQ5aC0zNS4wMmE2LjEgNi4xIDAgMCAwLTQuODcgMy4wM2wtLjQzLjg0Yy0uNzkgMS41OC0uNCA0IC44NSA1LjI0bDIuMzYgMi4zNmExMi4wNCAxMi4wNCAwIDAgMSAzLjExIDcuNTFBMTMgMTMgMCAxIDEgODMgNjhhMTIgMTIgMCAwIDEgMy4xMS03LjUzbDIuMzYtMi4zNmE0LjkzIDQuOTMgMCAwIDAgLjg1LTUuMjRsLS40My0uODRBNi4xIDYuMSAwIDAgMCA4NC4wMiA0OUg0OXYzNS4wMmE4LjA4IDguMDggMCAwIDEtNC4xMyA2LjY2bC0uODQuNDNhNi45MSA2LjkxIDAgMCAxLTcuNTYtMS4yMmwtMi4zNi0yLjM2QTEwLjA2IDEwLjA2IDAgMCAwIDI4IDg1YTExIDExIDAgMCAwIDAgMjJjMS45NCAwIDQuNzUtMS4xNiA2LjExLTIuNTNsMi4zNi0yLjM2YTYuOTMgNi45MyAwIDAgMSA3LjU2LTEuMjJsLjg0LjQzYTguMDggOC4wOCAwIDAgMSA0LjEzIDYuNjZWMTQzaDM1LjAyeic+PC9wYXRoPjwvc3ZnPg==); } @@ -63,7 +60,7 @@ body { font-family: 'HarmonyOS_Regular', 'MiSans', 'HarmonyOS Sans SC', system-ui, sans-serif; color: var(--text-color); background: var(--background-color); - transition: color var(--motion-base) var(--motion-ease-standard), background-color var(--motion-base) var(--motion-ease-standard); + transition: color 0.2s ease, background-color 0.2s ease; } button, @@ -82,17 +79,6 @@ button { letter-spacing: 0; } -button:not(:disabled), -a { - transition-duration: var(--motion-fast); - transition-timing-function: var(--motion-ease-standard); -} - -button:not(:disabled):active, -a:active { - transform: scale(0.97); -} - a { color: inherit; text-decoration: none; @@ -130,18 +116,12 @@ ul { .route-view-enter-active, .route-view-leave-active { - transition: opacity var(--motion-base) var(--motion-ease), transform var(--motion-base) var(--motion-ease); - transform-origin: 50% 42%; -} - -.route-view-enter-from { - opacity: 0; - transform: translateY(12px) scale(0.992); + transition: opacity 0.2s ease; } +.route-view-enter-from, .route-view-leave-to { opacity: 0; - transform: translateY(-8px) scale(0.996); } .background { @@ -155,7 +135,7 @@ ul { justify-content: center; z-index: -1; background: var(--background-color) var(--background-image) repeat; - transition: opacity var(--motion-emphasis) var(--motion-ease), background-color var(--motion-base) var(--motion-ease-standard); + transition: background-color 0.2s ease; } .site-footer { @@ -172,36 +152,13 @@ ul { a { color: inherit; - transition: color var(--motion-fast) var(--motion-ease-standard), transform var(--motion-fast) var(--motion-ease); + transition: color 0.2s ease; &:hover { color: var(--hover-link-color); - transform: translateY(-1px); } } } -::view-transition-old(root), -::view-transition-new(root) { - animation-duration: var(--motion-theme); - animation-timing-function: var(--motion-ease); - mix-blend-mode: normal; -} - -::view-transition-old(root) { - animation: none; - z-index: 1; -} - -::view-transition-new(root) { - z-index: 9999; - animation-name: theme-reveal; -} - -@keyframes theme-reveal { - from { clip-path: circle(0 at var(--theme-origin-x) var(--theme-origin-y)); } - to { clip-path: circle(150vmax at var(--theme-origin-x) var(--theme-origin-y)); } -} - .police-link { display: flex; align-items: center; @@ -230,9 +187,4 @@ ul { transition-delay: 0ms !important; transition-duration: 0.01ms !important; } - - ::view-transition-old(root), - ::view-transition-new(root) { - animation: none !important; - } }