From bcbdff8768ccb7970ceb038d1120dda6d6617dad Mon Sep 17 00:00:00 2001
From: Tim <135014430+nagisa77@users.noreply.github.com>
Date: Sat, 16 Aug 2025 17:57:42 +0800
Subject: [PATCH] feat: initialize frosted glass setting
---
frontend_nuxt/app.vue | 2 +-
frontend_nuxt/assets/global.css | 13 ++++
frontend_nuxt/components/BasePopup.vue | 4 +-
frontend_nuxt/components/HeaderComponent.vue | 2 +-
frontend_nuxt/components/LoginOverlay.vue | 2 +-
frontend_nuxt/pages/settings.vue | 65 +++++++++++++++++++-
frontend_nuxt/plugins/frosted.client.ts | 6 ++
frontend_nuxt/utils/frosted.js | 26 ++++++++
frontend_nuxt/utils/theme.js | 2 +-
9 files changed, 115 insertions(+), 7 deletions(-)
create mode 100644 frontend_nuxt/plugins/frosted.client.ts
create mode 100644 frontend_nuxt/utils/frosted.js
diff --git a/frontend_nuxt/app.vue b/frontend_nuxt/app.vue
index e55367988..8148fe4c9 100644
--- a/frontend_nuxt/app.vue
+++ b/frontend_nuxt/app.vue
@@ -131,7 +131,7 @@ const goToNewPost = () => {
cursor: pointer;
z-index: 1000;
display: flex;
- backdrop-filter: blur(5px);
+ backdrop-filter: var(--blur-5);
justify-content: center;
align-items: center;
}
diff --git a/frontend_nuxt/assets/global.css b/frontend_nuxt/assets/global.css
index dcf0b3371..910125d06 100644
--- a/frontend_nuxt/assets/global.css
+++ b/frontend_nuxt/assets/global.css
@@ -7,6 +7,11 @@
--header-background-color: white;
--header-border-color: lightgray;
--header-text-color: black;
+ --blur-1: blur(1px);
+ --blur-2: blur(2px);
+ --blur-4: blur(4px);
+ --blur-5: blur(5px);
+ --blur-10: blur(10px);
/* 加一个app前缀防止与firefox的userChrome.css中的--menu-background-color冲突 */
--app-menu-background-color: white;
--background-color: white;
@@ -59,6 +64,14 @@
--activity-card-background-color: #585858;
}
+:root[data-frosted='off'] {
+ --blur-1: none;
+ --blur-2: none;
+ --blur-4: none;
+ --blur-5: none;
+ --blur-10: none;
+}
+
body {
margin: 0;
padding: 0;
diff --git a/frontend_nuxt/components/BasePopup.vue b/frontend_nuxt/components/BasePopup.vue
index a4ed47b68..16c42c2f1 100644
--- a/frontend_nuxt/components/BasePopup.vue
+++ b/frontend_nuxt/components/BasePopup.vue
@@ -41,8 +41,8 @@ export default {
left: 0;
right: 0;
bottom: 0;
- backdrop-filter: blur(2px);
- -webkit-backdrop-filter: blur(2px);
+ backdrop-filter: var(--blur-2);
+ -webkit-backdrop-filter: var(--blur-2);
}
.popup-content {
position: relative;
diff --git a/frontend_nuxt/components/HeaderComponent.vue b/frontend_nuxt/components/HeaderComponent.vue
index 32b18a1e1..bb4cf2fc9 100644
--- a/frontend_nuxt/components/HeaderComponent.vue
+++ b/frontend_nuxt/components/HeaderComponent.vue
@@ -188,7 +188,7 @@ onMounted(async () => {
justify-content: center;
height: var(--header-height);
background-color: var(--background-color-blur);
- backdrop-filter: blur(10px);
+ backdrop-filter: var(--blur-10);
color: var(--header-text-color);
border-bottom: 1px solid var(--header-border-color);
}
diff --git a/frontend_nuxt/components/LoginOverlay.vue b/frontend_nuxt/components/LoginOverlay.vue
index e2fd9fe0e..e1a7907b7 100644
--- a/frontend_nuxt/components/LoginOverlay.vue
+++ b/frontend_nuxt/components/LoginOverlay.vue
@@ -35,7 +35,7 @@ const goLogin = () => {
left: 0;
right: 0;
bottom: 0;
- backdrop-filter: blur(4px);
+ backdrop-filter: var(--blur-4);
z-index: 1;
}
diff --git a/frontend_nuxt/pages/settings.vue b/frontend_nuxt/pages/settings.vue
index 5b94f2ae0..7178ee347 100644
--- a/frontend_nuxt/pages/settings.vue
+++ b/frontend_nuxt/pages/settings.vue
@@ -36,6 +36,13 @@