From c21d276f406f23c4fb070bde613f40f5c055cd2f Mon Sep 17 00:00:00 2001 From: hehh Date: Thu, 4 Dec 2025 16:02:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=E9=87=8D=E6=9E=84=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E4=B8=8E=E5=8F=99=E4=BA=8B=E5=B1=82=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=89=8B=E5=8A=BF=E4=BA=A4=E4=BA=92=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构智能加载层结构与样式,提升初始化体验 - 优化白天/黑夜主题配色与粒子渲染效果 - 增强手势识别逻辑与视觉反馈 - 改进UI层DOM结构与类名语义化 - 更新内容字典与加载文案 - 修复安全DOM操作与空指针问题 - 调整物理引擎参数,增强交互手感 - 优化粒子爆炸与散开动画效果 - 统一状态管理对象,提高代码可维护性 - 增加权限提示与超时处理机制 --- me.html | 541 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 283 insertions(+), 258 deletions(-) diff --git a/me.html b/me.html index 394596f..83b8bf1 100644 --- a/me.html +++ b/me.html @@ -11,34 +11,86 @@ --text-color: #FFFFFF; --accent-color: #00FFFF; --loader-bg: #000000; + --loader-text: #FFFFFF; } - /* 白天模式变量 */ + /* === 白天模式 (高对比度/清雅) === */ [data-theme="day"] { - --bg-color: linear-gradient(135deg, #e0eafc 0%, #cfdef3 100%); /* 清新银蓝 */ - --text-color: #1a1a2e; /* 深蓝黑文字 */ - --accent-color: #0055ff; /* 科技蓝 */ - --loader-bg: #f5f7fa; + --bg-color: linear-gradient(135deg, #e0eafc 0%, #cfdef3 100%); + --text-color: #1a1a2e; /* 极深蓝黑,保证可见度 */ + --accent-color: #0044cc; + --loader-bg: #f0f2f5; + --loader-text: #2c3e50; } - /* 黑夜模式变量 */ + /* === 黑夜模式 (霓虹/深空) === */ [data-theme="night"] { - --bg-color: radial-gradient(circle at 50% 50%, #111122 0%, #050510 60%, #000000 100%); + --bg-color: radial-gradient(circle at 50% 50%, #0f1729 0%, #000000 100%); --text-color: #FFFFFF; --accent-color: #00FFFF; --loader-bg: #000000; + --loader-text: #FFFFFF; } body { margin: 0; overflow: hidden; background: var(--bg-color); color: var(--text-color); - font-family: 'Helvetica Neue', 'Arial', sans-serif; + font-family: 'Helvetica Neue', Arial, sans-serif; transition: background 1s, color 1s; user-select: none; cursor: default; } - /* === UI 层 === */ + /* === 1. 智能加载层 === */ + #start-screen { + position: fixed; inset: 0; background: var(--loader-bg); z-index: 100; + display: flex; flex-direction: column; align-items: center; justify-content: center; + transition: opacity 1s cubic-bezier(0.65, 0, 0.35, 1); + } + + .logo-text { + font-family: 'Times New Roman', serif; font-size: 32px; letter-spacing: 8px; + color: var(--loader-text); margin-bottom: 20px; animation: breathe 3s infinite; + } + + .loader-ring { + width: 50px; height: 50px; border: 2px solid rgba(128,128,128,0.2); + border-top-color: var(--accent-color); border-radius: 50%; + animation: spin 1s linear infinite; margin-bottom: 20px; + } + + .status-text { + font-size: 14px; letter-spacing: 2px; color: var(--loader-text); + opacity: 0.8; height: 20px; + } + + .perm-hint { + margin-top: 30px; padding: 10px 20px; border: 1px solid var(--accent-color); + border-radius: 20px; font-size: 12px; color: var(--loader-text); + opacity: 0; transform: translateY(10px); transition: all 1s; + } + .perm-hint.show { opacity: 1; transform: translateY(0); } + + /* === 2. 叙事文本层 (DOM覆盖) === */ + #narrative-layer { + position: absolute; top: 40%; left: 50%; transform: translate(-50%, -50%); + text-align: center; width: 90%; pointer-events: none; z-index: 5; + } + .n-title { + font-size: 8vw; font-weight: 900; letter-spacing: -2px; margin-bottom: 10px; + opacity: 0; transform: translateY(30px); transition: all 0.8s cubic-bezier(0.2, 1, 0.3, 1); + background: linear-gradient(45deg, var(--text-color), var(--accent-color)); + -webkit-background-clip: text; -webkit-text-fill-color: transparent; + } + .n-sub { + font-size: 18px; font-weight: 400; letter-spacing: 6px; opacity: 0; + transform: translateY(20px); transition: all 0.8s 0.2s cubic-bezier(0.2, 1, 0.3, 1); + color: var(--text-color); + } + /* 激活状态类名 */ + .show-text .n-title, .show-text .n-sub { opacity: 1; transform: translateY(0); } + + /* === 3. UI HUD === */ #ui-layer { position: fixed; inset: 0; pointer-events: none; z-index: 20; display: flex; flex-direction: column; justify-content: space-between; @@ -47,8 +99,8 @@ .header { display: flex; justify-content: space-between; - font-size: 10px; letter-spacing: 2px; text-transform: uppercase; opacity: 0.6; - font-weight: 600; + font-size: 10px; letter-spacing: 2px; text-transform: uppercase; + color: var(--text-color); opacity: 0.7; font-weight: 600; } .center-stage { @@ -57,75 +109,32 @@ } .main-hint { - font-size: 20px; font-weight: 300; letter-spacing: 8px; - cursor: pointer; transition: all 0.3s; - padding: 20px; border: 1px solid transparent; - } - .main-hint:hover { - transform: scale(1.02); - letter-spacing: 10px; - color: var(--accent-color); + font-size: 20px; font-weight: 300; letter-spacing: 8px; cursor: pointer; + padding: 20px; transition: all 0.3s; } + .main-hint:hover { letter-spacing: 10px; color: var(--accent-color); } .sub-hint { - font-size: 10px; opacity: 0.6; margin-top: 10px; letter-spacing: 3px; + font-size: 10px; opacity: 0.6; margin-top: 15px; letter-spacing: 3px; font-family: 'Courier New', monospace; } - .exit-trigger { + .exit-btn { margin-top: 40px; display: inline-block; font-size: 10px; letter-spacing: 2px; - padding: 8px 16px; border: 1px solid rgba(128,128,128,0.3); - cursor: pointer; opacity: 0; transform: translateY(10px); transition: all 0.5s; - pointer-events: none; background: rgba(128,128,128,0.1); backdrop-filter: blur(5px); - border-radius: 20px; + padding: 10px 24px; border: 1px solid var(--text-color); + border-radius: 30px; cursor: pointer; opacity: 0; + transform: translateY(20px); transition: all 0.5s; pointer-events: none; } - .exit-trigger.visible { opacity: 1; transform: translateY(0); pointer-events: auto; } - .exit-trigger:hover { background: var(--accent-color); color: #FFF; border-color: var(--accent-color); } + .exit-btn.visible { opacity: 0.8; transform: translateY(0); pointer-events: auto; } + .exit-btn:hover { background: var(--text-color); color: var(--bg-color); opacity: 1; } - /* === 叙事纯文本层 === */ - #narrative-overlay { - position: absolute; top: 40%; left: 50%; transform: translate(-50%, -50%); - text-align: center; width: 90%; pointer-events: none; z-index: 5; - } - .n-title { - font-size: 60px; font-weight: 800; letter-spacing: -2px; margin-bottom: 10px; - opacity: 0; transform: translateY(30px); transition: all 0.8s cubic-bezier(0.2, 1, 0.3, 1); - background: linear-gradient(45deg, var(--text-color), var(--accent-color)); - -webkit-background-clip: text; -webkit-text-fill-color: transparent; - } - .n-sub { - font-size: 14px; font-weight: 400; letter-spacing: 6px; opacity: 0; - transform: translateY(20px); transition: all 0.8s 0.2s cubic-bezier(0.2, 1, 0.3, 1); - color: var(--text-color); - } - .show-text .n-title, .show-text .n-sub { opacity: 1; transform: translateY(0); } - - /* === 智能AI加载页 === */ - #ai-loader { - position: fixed; inset: 0; background: var(--loader-bg); z-index: 100; - display: flex; flex-direction: column; align-items: center; justify-content: center; - transition: opacity 1s cubic-bezier(0.7, 0, 0.3, 1); - } - - /* 科技感加载动画 */ - .tech-spinner { - width: 60px; height: 60px; border: 2px solid var(--accent-color); - border-top: 2px solid transparent; border-radius: 50%; - animation: spin 1s linear infinite; margin-bottom: 30px; - } - .loader-quote { - font-family: 'Helvetica Neue', sans-serif; font-size: 14px; - max-width: 500px; text-align: center; line-height: 1.8; min-height: 50px; - opacity: 0; transition: opacity 0.5s; font-weight: 300; letter-spacing: 1px; - color: var(--text-color); - } - - @keyframes spin { 0% {transform: rotate(0deg)} 100% {transform: rotate(360deg)} } + @keyframes breathe { 0%,100%{opacity:0.6} 50%{opacity:1} } + @keyframes spin { to { transform: rotate(360deg); } } - + @@ -140,29 +149,31 @@ - -
-
-
+ +
+
HONESTY
+
+
Initializing System...
+
⚠ 请允许摄像头权限以开启手势交互
- -
+ +
- +
- SYSTEM IDLE + NEURAL LINK: STANDBY THEME: AUTO
-
[ 退出档案 / EXIT ]
+
[ EXIT ARCHIVE ]
@@ -172,132 +183,160 @@
- +