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;
- }
}