Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion .vitepress/theme/index.mts
Original file line number Diff line number Diff line change
@@ -1,2 +1,30 @@
import type { EnhanceAppContext, Theme } from 'vitepress'
import DefaultTheme from 'vitepress/theme'
export default DefaultTheme
import './style.css'

export default {
extends: DefaultTheme,
enhanceApp({ app, router }: EnhanceAppContext) {
// 监听路由变化,添加页面切换动画
if (typeof window !== 'undefined') {
// 首次加载时添加动画
router.onAfterRouteChanged = () => {
const content = document.querySelector('.VPDoc, .VPContent')
if (content) {
content.classList.remove('page-transition-leave')
content.classList.add('page-transition-enter')
setTimeout(() => {
content.classList.remove('page-transition-enter')
}, 200)
}
}

router.onBeforeRouteChange = () => {
const content = document.querySelector('.VPDoc, .VPContent')
if (content) {
content.classList.add('page-transition-leave')
}
}
}
},
} satisfies Theme
25 changes: 25 additions & 0 deletions .vitepress/theme/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/* 页面切换过渡动效 */
.VPDoc,
.VPContent {
transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;
}

.page-transition-leave {
opacity: 0;
transform: translateY(-10px);
}

.page-transition-enter {
animation: pageEnter 0.2s ease-out;
}

@keyframes pageEnter {
from {
opacity: 0;
transform: translateY(15px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
Loading