diff --git a/.vitepress/theme/Layout.vue b/.vitepress/theme/Layout.vue
index f559ea3..eeddd88 100644
--- a/.vitepress/theme/Layout.vue
+++ b/.vitepress/theme/Layout.vue
@@ -1,9 +1,8 @@
-
-
-
+
+
@@ -82,6 +153,13 @@ onMounted(() => {
transition: background-color 0.15s ease, color 0.3s ease;
}
+
+
+html::-webkit-scrollbar,
+body::-webkit-scrollbar {
+ width: 0px;
+}
+
.medium-zoom-overlay {
backdrop-filter: blur(5rem);
}
@@ -109,5 +187,4 @@ onMounted(() => {
transform: translateY(100px);
opacity: 0;
}
-
\ No newline at end of file
diff --git a/.vitepress/theme/components/KTab/index.vue b/.vitepress/theme/components/KTab/index.vue
index 1d21c19..7ecf773 100644
--- a/.vitepress/theme/components/KTab/index.vue
+++ b/.vitepress/theme/components/KTab/index.vue
@@ -78,6 +78,7 @@ const tabsContainer: TabsContainer = reactive({
const container = tabsContainer.panelContainer;
const panels = Array.from(container.children) as HTMLElement[];
+ // 进行动画切换
panels.forEach((panel, index) => {
console.log('index', index);
console.log('id', id);
diff --git a/.vitepress/theme/components/bilibli-player/index.vue b/.vitepress/theme/components/bilibli-player/index.vue
index 08c0560..c541a19 100644
--- a/.vitepress/theme/components/bilibli-player/index.vue
+++ b/.vitepress/theme/components/bilibli-player/index.vue
@@ -54,7 +54,7 @@ function playVideo() {
aspect-ratio: 16/9;
border-radius: .5em;
overflow: hidden;
- border: 2px solid var(--vp-c-brand-3);
+ border: 3px solid var(--vp-c-brand-2);
}
.cover-container {
@@ -78,7 +78,7 @@ function playVideo() {
width: 64px;
height: 64px;
border-radius: 50%;
- background-color: var(--vp-c-brand-3);
+ background-color: var(--vp-c-brand-2);
border: none;
color: var(--vp-c-bg);
cursor: pointer;
diff --git a/.vitepress/theme/components/scrollbar/controller.ts b/.vitepress/theme/components/scrollbar/controller.ts
new file mode 100644
index 0000000..d0a0234
--- /dev/null
+++ b/.vitepress/theme/components/scrollbar/controller.ts
@@ -0,0 +1,25 @@
+import { reactive } from 'vue';
+
+interface ScrollbarController {
+ element: any;
+ display: boolean;
+ height: number;
+ width: number;
+ top: number;
+ opacity: number;
+ percentage: number;
+}
+
+export const scrollbarController = reactive({
+ element: undefined,
+ display: true,
+ height: 200,
+ width: 5,
+ top: 0,
+ opacity: 0,
+ percentage: 0
+});
+
+export const navigationBarController = reactive({
+ show: true
+});
\ No newline at end of file
diff --git a/.vitepress/theme/components/scrollbar/index.vue b/.vitepress/theme/components/scrollbar/index.vue
new file mode 100644
index 0000000..587490c
--- /dev/null
+++ b/.vitepress/theme/components/scrollbar/index.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.vitepress/theme/css/animation.css b/.vitepress/theme/css/animation.css
new file mode 100644
index 0000000..d5557e9
--- /dev/null
+++ b/.vitepress/theme/css/animation.css
@@ -0,0 +1,52 @@
+
+
+.tagline {
+ width: fit-content;
+}
+
+.tagline {
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ padding: 0.5rem 0;
+ cursor: pointer;
+}
+
+.tagline:hover::before {
+ transform: translateX(0);
+}
+
+.tagline::before {
+ content: "";
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ height: 2px;
+ width: 100%;
+ background-color: var(--vp-c-brand-2);
+ transform: translateX(-105%);
+ transition: transform 1.2s cubic-bezier(0.23, 1, 0.32, 1);
+}
+
+
+.VPFeatures .item {
+ cursor: pointer;
+ transition: .5s cubic-bezier(0.23, 1, 0.32, 1);
+}
+
+.VPFeatures .item:hover {
+ transform: scale(1.05);
+}
+
+.VPFeatures .item .box {
+ transition: .5s cubic-bezier(0.23, 1, 0.32, 1);
+ border-radius: .5em;
+}
+
+.VPFeatures .item:hover .box {
+ background-color: var(--vp-c-brand-3);
+}
+
+.VPFeatures .item:hover .box .details {
+ color: var(--vp-c-white);
+}
\ No newline at end of file
diff --git a/.vitepress/theme/css/style.css b/.vitepress/theme/css/style.css
index f2e1ecf..e9fbfce 100644
--- a/.vitepress/theme/css/style.css
+++ b/.vitepress/theme/css/style.css
@@ -44,30 +44,34 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-c-default-1: var(--vp-c-gray-1);
- --vp-c-default-2: var(--vp-c-gray-2);
- --vp-c-default-3: var(--vp-c-gray-3);
- --vp-c-default-soft: var(--vp-c-gray-soft);
+ --vp-c-default-1: var(--vp-c-gray-1);
+ --vp-c-default-2: var(--vp-c-gray-2);
+ --vp-c-default-3: var(--vp-c-gray-3);
+ --vp-c-default-soft: var(--vp-c-gray-soft);
- --vp-c-brand-1: #d8a8e7; /* 较深的变体 */
- --vp-c-brand-2: #C285D6; /* 基底颜色 */
- --vp-c-brand-3: #a368b8; /* 较浅的变体 */
- --vp-c-brand-soft: rgba(194, 133, 214, 0.1); /* 半透明的柔和版本 */
+ --vp-c-brand-1: #d8a8e7;
+ /* 较深的变体 */
+ --vp-c-brand-2: #C285D6;
+ /* 基底颜色 */
+ --vp-c-brand-3: #a368b8;
+ /* 较浅的变体 */
+ --vp-c-brand-soft: rgba(194, 133, 214, 0.1);
+ /* 半透明的柔和版本 */
- --vp-c-tip-1: var(--vp-c-brand-1);
- --vp-c-tip-2: var(--vp-c-brand-2);
- --vp-c-tip-3: var(--vp-c-brand-3);
- --vp-c-tip-soft: var(--vp-c-brand-soft);
+ --vp-c-tip-1: var(--vp-c-brand-1);
+ --vp-c-tip-2: var(--vp-c-brand-2);
+ --vp-c-tip-3: var(--vp-c-brand-3);
+ --vp-c-tip-soft: var(--vp-c-brand-soft);
- --vp-c-warning-1: var(--vp-c-yellow-1);
- --vp-c-warning-2: var(--vp-c-yellow-2);
- --vp-c-warning-3: var(--vp-c-yellow-3);
- --vp-c-warning-soft: var(--vp-c-yellow-soft);
+ --vp-c-warning-1: var(--vp-c-yellow-1);
+ --vp-c-warning-2: var(--vp-c-yellow-2);
+ --vp-c-warning-3: var(--vp-c-yellow-3);
+ --vp-c-warning-soft: var(--vp-c-yellow-soft);
- --vp-c-danger-1: var(--vp-c-red-1);
- --vp-c-danger-2: var(--vp-c-red-2);
- --vp-c-danger-3: var(--vp-c-red-3);
- --vp-c-danger-soft: var(--vp-c-red-soft);
+ --vp-c-danger-1: var(--vp-c-red-1);
+ --vp-c-danger-2: var(--vp-c-red-2);
+ --vp-c-danger-3: var(--vp-c-red-3);
+ --vp-c-danger-soft: var(--vp-c-red-soft);
}
/**
@@ -75,15 +79,15 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-button-brand-border: transparent;
- --vp-button-brand-text: var(--vp-c-white);
- --vp-button-brand-bg: var(--vp-c-brand-3);
- --vp-button-brand-hover-border: transparent;
- --vp-button-brand-hover-text: var(--vp-c-white);
- --vp-button-brand-hover-bg: var(--vp-c-brand-2);
- --vp-button-brand-active-border: transparent;
- --vp-button-brand-active-text: var(--vp-c-white);
- --vp-button-brand-active-bg: var(--vp-c-brand-1);
+ --vp-button-brand-border: transparent;
+ --vp-button-brand-text: var(--vp-c-white);
+ --vp-button-brand-bg: var(--vp-c-brand-3);
+ --vp-button-brand-hover-border: transparent;
+ --vp-button-brand-hover-text: var(--vp-c-white);
+ --vp-button-brand-hover-bg: var(--vp-c-brand-2);
+ --vp-button-brand-active-border: transparent;
+ --vp-button-brand-active-text: var(--vp-c-white);
+ --vp-button-brand-active-bg: var(--vp-c-brand-1);
}
/**
@@ -91,27 +95,27 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-home-hero-name-color: transparent;
- --vp-home-hero-name-background: -webkit-linear-gradient(120deg,
- #bd34fe 30%,
- #41d1ff);
+ --vp-home-hero-name-color: transparent;
+ --vp-home-hero-name-background: -webkit-linear-gradient(120deg,
+ #bd34fe 30%,
+ #41d1ff);
- --vp-home-hero-image-background-image: linear-gradient(-45deg,
- #bd34fe 50%,
- #47caff 50%);
- --vp-home-hero-image-filter: blur(44px);
+ --vp-home-hero-image-background-image: linear-gradient(-45deg,
+ #bd34fe 50%,
+ #47caff 50%);
+ --vp-home-hero-image-filter: blur(44px);
}
@media (min-width: 640px) {
- :root {
- --vp-home-hero-image-filter: blur(56px);
- }
+ :root {
+ --vp-home-hero-image-filter: blur(56px);
+ }
}
@media (min-width: 960px) {
- :root {
- --vp-home-hero-image-filter: blur(68px);
- }
+ :root {
+ --vp-home-hero-image-filter: blur(68px);
+ }
}
/**
@@ -119,15 +123,15 @@
* -------------------------------------------------------------------------- */
:root {
- --vp-custom-block-tip-border: transparent;
- --vp-custom-block-tip-text: var(--vp-c-text-1);
- --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
- --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
+ --vp-custom-block-tip-border: transparent;
+ --vp-custom-block-tip-text: var(--vp-c-text-1);
+ --vp-custom-block-tip-bg: var(--vp-c-brand-soft);
+ --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
}
:root {
- --vp-home-hero-name-color: transparent;
- --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
+ --vp-home-hero-name-color: transparent;
+ --vp-home-hero-name-background: -webkit-linear-gradient(120deg, #bd34fe, #41d1ff);
}
:root {
@@ -138,34 +142,34 @@
--el-text-color-primary: var(--vp-c-text-1) !important;
--el-border-color: var(--vp-c-border) !important;
--el-bg-color: var(--vp-c-bg) !important;
- --el-collapse-border-color: var(--vp-c-border) !important;
+ --el-collapse-border-color: var(--vp-c-border) !important;
}
.el-collapse {
- border-top: 1px solid transparent !important;
+ border-top: 1px solid transparent !important;
}
.el-collapse-item__header {
- border-top: unset !important;
+ border-top: unset !important;
background-color: var(--vp-c-bg) !important;
- border-bottom: 1px solid var(--vp-c-border) !important;
- height: fit-content !important;
+ border-bottom: 1px solid var(--vp-c-border) !important;
+ height: fit-content !important;
}
.el-collapse-item__title {
- font-size: 1.2rem;
- padding: 10px 0;
+ font-size: 1.2rem;
+ padding: 10px 0;
}
.el-collapse-item__content {
- padding: 20px 0 0 0;
- font-size: 15px !important;
+ padding: 20px 0 0 0;
+ font-size: 15px !important;
}
.el-collapse-item__wrap {
- border-bottom: 1px solid var(--vp-c-border) !important;
+ border-bottom: 1px solid var(--vp-c-border) !important;
}
/**
@@ -173,11 +177,11 @@
* -------------------------------------------------------------------------- */
.DocSearch {
- --docsearch-primary-color: var(--vp-c-brand-1) !important;
+ --docsearch-primary-color: var(--vp-c-brand-1) !important;
}
.two-side-layout .image-container {
- display: unset !important;
+ display: unset !important;
}
@@ -189,61 +193,78 @@
}
.home-tab {
- min-height: 477px;
+ min-height: 477px;
}
@media (max-width: 500px) {
.home-tab {
- min-height: 677px;
+ min-height: 677px;
}
}
.VPHero .image-container img {
- box-shadow: unset !important;
+ box-shadow: unset !important;
}
iframe {
- border: 2px solid var(--vp-c-brand-3);
- border-radius: 8px;
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
- transition: border-color 0.3s ease;
+ border: 2px solid var(--vp-c-brand-3);
+ border-radius: 8px;
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
+ transition: border-color 0.3s ease;
}
.VPMenu {
- background-color: rgba(255, 255, 255, 0.55) !important;
- border: unset !important;
- backdrop-filter: blur(10px);
+ background-color: rgba(255, 255, 255, 0.55) !important;
+ border: unset !important;
+ backdrop-filter: blur(10px);
}
.dark .VPMenu {
- background-color: rgba(0, 0, 0, 0.55) !important;
- backdrop-filter: blur(10px);
+ background-color: rgba(0, 0, 0, 0.55) !important;
+ backdrop-filter: blur(10px);
}
.VPTeamPage {
- margin-top: 0 !important;
+ margin-top: 0 !important;
}
/* 自定义全局滚动条样式 */
::-webkit-scrollbar {
- width: 8px;
+ width: 0px;
}
::-webkit-scrollbar-track {
- background: var(--vp-c-default-soft);
+ background: var(--vp-c-default-soft);
}
::-webkit-scrollbar-thumb {
- background: var(--vp-c-brand-3);
- border-radius: 4px;
+ background: var(--vp-c-brand-3);
+ border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
- background: var(--vp-c-brand-2);
+ background: var(--vp-c-brand-2);
+}
+
+/* 设置选中文本的背景色和文字颜色 */
+::selection {
+ background: var(--vp-c-brand-2);
+ color: white;
+}
+
+/* 兼容 Firefox */
+::-moz-selection {
+ background: var(--vp-c-brand-2);
+ color: white;
+}
+
+.VPHero .name.clip {
+ color: var(--vp-c-brand-2) !important;
+ background-color: var(--vp-c-brand-2) !important;
}
\ No newline at end of file
diff --git a/.vitepress/theme/index.mts b/.vitepress/theme/index.mts
index bcca0a1..2bb7f7b 100644
--- a/.vitepress/theme/index.mts
+++ b/.vitepress/theme/index.mts
@@ -20,6 +20,7 @@ import { ElCollapse, ElCollapseItem, ElTimeline, ElTimelineItem } from 'element-
import './css/style.css';
import './css/iconfont.css';
import './css/element-plus.css';
+import './css/animation.css';
import '@nolebase/vitepress-plugin-git-changelog/client/style.css';
import '@nolebase/vitepress-plugin-enhanced-mark/client/style.css';
import '@nolebase/vitepress-plugin-inline-link-preview/client/style.css';
diff --git a/package-lock.json b/package-lock.json
index 9b11d63..19fab9d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -6,6 +6,7 @@
"": {
"dependencies": {
"element-plus": "^2.9.11",
+ "gsap": "^3.13.0",
"vitepress": "^1.6.3"
},
"devDependencies": {
@@ -3962,6 +3963,11 @@
"node": ">=6.0"
}
},
+ "node_modules/gsap": {
+ "version": "3.13.0",
+ "resolved": "https://registry.npmmirror.com/gsap/-/gsap-3.13.0.tgz",
+ "integrity": "sha512-QL7MJ2WMjm1PHWsoFrAQH/J8wUeqZvMtHO58qdekHpCfhvhSL4gSiz6vJf5EeMP0LOn3ZCprL2ki/gjED8ghVw=="
+ },
"node_modules/hachure-fill": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz",
diff --git a/package.json b/package.json
index dee5f75..d98e662 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
},
"dependencies": {
"element-plus": "^2.9.11",
+ "gsap": "^3.13.0",
"vitepress": "^1.6.3"
},
"devDependencies": {