Skip to content

Commit 66d5bad

Browse files
committed
Merge remote-tracking branch 'origin/master'
# Conflicts: # .idea/material_theme_project_new.xml
2 parents 24f05ea + 6f8f725 commit 66d5bad

13 files changed

Lines changed: 2213 additions & 73 deletions

File tree

.idea/material_theme_project_new.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
2+
/* 强制覆盖 Modal 默认样式 */
3+
.modal-panel.fullscreen-preview {
4+
width: 100vw !important;
5+
height: 100vh !important;
6+
max-width: none !important;
7+
max-height: none !important;
8+
border-radius: 0 !important;
9+
padding: 0 !important;
10+
background: #000 !important;
11+
box-shadow: none !important;
12+
border: none !important;
13+
display: flex !important;
14+
flex-direction: column !important;
15+
position: fixed !important;
16+
top: 0 !important;
17+
left: 0 !important;
18+
margin: 0 !important;
19+
transform: none !important;
20+
}
21+
22+
.preview-engine-container {
23+
--glass: rgba(20, 20, 20, 0.4);
24+
--glass-border: rgba(255, 255, 255, 0.08);
25+
--accent: #fff;
26+
--text: #fff;
27+
--text-sec: rgba(255, 255, 255, 0.5);
28+
--ease-spring: cubic-bezier(0.19, 1, 0.22, 1);
29+
--ease-expo: cubic-bezier(0.16, 1, 0.3, 1);
30+
font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", sans-serif;
31+
}
32+
33+
/* --- 背景模糊层 --- */
34+
.ambient-bg {
35+
position: absolute; inset: -100px;
36+
background-size: cover; background-position: center;
37+
filter: blur(120px) brightness(0.3);
38+
z-index: 0; transition: background-image 1.2s ease-in-out;
39+
opacity: 0.8;
40+
transform: scale(1.1); /* 防止模糊边缘 */
41+
}
42+
43+
/* --- 核心预览舞台 --- */
44+
.stage {
45+
flex: 1;
46+
position: relative;
47+
z-index: 10;
48+
width: 100vw;
49+
height: 100vh;
50+
overflow: hidden;
51+
background: #000;
52+
}
53+
54+
.scene-wrapper {
55+
position: absolute;
56+
top: 50%; left: 50%;
57+
transform: translate(-50%, -50%);
58+
/* Size will be set by JS to cover screen */
59+
box-shadow: none;
60+
border-radius: 0;
61+
transform-origin: center center;
62+
transition: opacity 0.6s ease;
63+
}
64+
65+
.base-img {
66+
display: block;
67+
width: 100%;
68+
height: 100%;
69+
object-fit: cover; /* Fallback */
70+
pointer-events: none;
71+
box-shadow: none;
72+
border-radius: 0;
73+
}
74+
75+
/* --- 渲染引擎 (Mini Version) --- */
76+
.warp-layer {
77+
position: absolute; top: 0; left: 0;
78+
width: 100%; height: 100%;
79+
transform-origin: 0 0;
80+
pointer-events: none;
81+
z-index: 20;
82+
}
83+
.screen { background: #000; position: relative; overflow: hidden; backface-visibility: hidden; will-change: transform; }
84+
.wallpaper { width: 100%; height: 100%; background-size: cover; background-position: center; transform: scale(1.02); transition: background-image 0.5s ease; }
85+
86+
.fx-layer div { position: absolute; inset: 0; pointer-events: none; }
87+
.fx-border { box-shadow: inset 0 0 0 1px #000; z-index: 31; }
88+
.fx-glare { mix-blend-mode: screen; background: linear-gradient(115deg, transparent 30%, rgba(255,255,255,0.1) 45%, transparent 60%); opacity: 0.2; }
89+
.fx-noise { mix-blend-mode: overlay; opacity: 0.08; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
90+
91+
/* OS UI */
92+
.os-ui { position: absolute; inset: 0; z-index: 25; color: #fff; display: flex; flex-direction: column; }
93+
.os-ui.dark { color: #000; }
94+
.ui-scale { width: 100%; height: 100%; transform-origin: top left; }
95+
96+
/* 悬浮 UI 容器 - 自动隐藏 */
97+
.dock-container {
98+
transition: transform 0.4s var(--ease-spring), opacity 0.4s ease;
99+
padding-bottom: 20px;
100+
}
101+
.preview-engine-container:hover .dock-container { opacity: 1; transform: translateX(-50%) translateY(0); }
102+
/* 默认稍微淡出,鼠标移入完全显示,或者一直显示但质感高级 */
103+
.dock-container { opacity: 0.9; }
104+
105+
/* 切换器 (Segmented Control) - 更高级的毛玻璃 */
106+
.switcher {
107+
display: flex;
108+
background: rgba(10, 10, 10, 0.5);
109+
backdrop-filter: blur(25px) saturate(150%);
110+
-webkit-backdrop-filter: blur(25px) saturate(150%);
111+
padding: 3px; border-radius: 100px;
112+
border: 1px solid rgba(255,255,255,0.08);
113+
position: relative;
114+
pointer-events: auto;
115+
margin-bottom: 16px;
116+
box-shadow: 0 10px 30px rgba(0,0,0,0.3);
117+
}
118+
.switch-opt {
119+
padding: 8px 24px; font-size: 13px; font-weight: 500; color: rgba(255,255,255,0.5);
120+
cursor: pointer; border-radius: 20px; transition: color 0.3s; position: relative; z-index: 2;
121+
}
122+
.switch-opt:hover { color: #fff; }
123+
.switch-opt.active { color: #000; font-weight: 600; }
124+
.switch-bg {
125+
position: absolute; top: 3px; left: 3px; bottom: 3px; width: 50%;
126+
background: #fff; border-radius: 100px;
127+
transition: transform 0.4s var(--ease-spring); z-index: 1;
128+
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
129+
}
130+
131+
/* 缩略图列表 - 扑克牌堆叠效果 */
132+
.thumbs-rail {
133+
height: 140px; /* 增加高度以容纳卡片 */
134+
width: auto;
135+
background: transparent; /* 移除背景,靠卡片自身 */
136+
border: none;
137+
box-shadow: none;
138+
display: flex;
139+
align-items: flex-end;
140+
justify-content: center;
141+
padding: 0 40px;
142+
gap: 0; /* 移除间距,通过负 margin 堆叠 */
143+
overflow-x: visible; /* 允许卡片溢出 */
144+
pointer-events: none; /* 容器不阻挡,只阻挡卡片 */
145+
}
146+
147+
.thumbs-rail::-webkit-scrollbar { display: none; }
148+
149+
.thumb {
150+
flex: 0 0 80px; height: 110px;
151+
border-radius: 16px;
152+
background-size: cover; background-position: center;
153+
cursor: pointer;
154+
opacity: 0.6;
155+
transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
156+
border: 1px solid rgba(255,255,255,0.15);
157+
position: relative;
158+
margin-left: -35px; /* 负边距实现堆叠 */
159+
box-shadow: -5px 0 15px rgba(0,0,0,0.3); /* 阴影增加层次 */
160+
transform-origin: bottom center;
161+
pointer-events: auto;
162+
filter: brightness(0.6) grayscale(0.6);
163+
z-index: 1;
164+
}
165+
166+
/* 首张卡片不需要负边距 */
167+
.thumb:first-child { margin-left: 0; }
168+
169+
/* 悬停效果 - 抽牌 */
170+
.thumb:hover {
171+
margin-left: 10px; /* 推开一点 */
172+
margin-right: 10px;
173+
transform: translateY(-20px) scale(1.1) rotate(0deg) !important;
174+
opacity: 1;
175+
filter: brightness(1) grayscale(0);
176+
z-index: 100; /* 浮到最上层 */
177+
box-shadow: 0 15px 30px rgba(0,0,0,0.5);
178+
}
179+
180+
/* 激活状态 - 高亮 */
181+
.thumb.active {
182+
transform: translateY(-30px) scale(1.15);
183+
opacity: 1;
184+
border-color: #fff;
185+
box-shadow: 0 0 20px rgba(255,255,255,0.4), 0 20px 40px rgba(0,0,0,0.6);
186+
filter: brightness(1) grayscale(0);
187+
z-index: 50;
188+
margin-left: 5px;
189+
margin-right: 5px;
190+
}
191+
192+
/* 兄弟元素避让动画 (可选,需 JS 配合或复杂 CSS 选择器,暂用简单 hover) */
193+
.thumb:hover ~ .thumb { transform: translateX(10px); }
194+
195+
/* 标签优化 */
196+
.thumb-tag {
197+
bottom: 10px; left: 50%; transform: translateX(-50%);
198+
font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 1px;
199+
color: #fff; text-shadow: 0 2px 4px rgba(0,0,0,0.8);
200+
opacity: 0; transition: 0.3s; pointer-events: none;
201+
}
202+
.thumb:hover .thumb-tag, .thumb.active .thumb-tag { opacity: 1; bottom: -25px; }
203+
204+
/* 自动轮播进度条 (可选) */
205+
.progress-bar {
206+
position: absolute; bottom: 0; left: 0; height: 3px; background: #fff;
207+
width: 0%; transition: width 0.1s linear; opacity: 0.8;
208+
}
209+
.thumb.active .progress-bar { width: 100%; transition: width 5s linear; } /* 假设5秒轮播 */
210+
211+
/* 关闭按钮覆盖 - 悬浮圆钮 */
212+
.modal-close {
213+
position: fixed !important; /* Force fixed */
214+
top: 24px !important; right: 24px !important;
215+
width: 40px !important; height: 40px !important;
216+
background: rgba(30,30,30,0.4) !important;
217+
backdrop-filter: blur(20px) !important;
218+
-webkit-backdrop-filter: blur(20px) !important;
219+
border: 1px solid rgba(255,255,255,0.1) !important;
220+
border-radius: 50% !important;
221+
transition: 0.3s !important;
222+
z-index: 1000 !important;
223+
}
224+
.modal-close:hover {
225+
background: rgba(255,255,255,0.2) !important;
226+
transform: rotate(90deg) scale(1.1);
227+
}
228+
.modal-close svg { width: 20px; height: 20px; fill: #fff; }
229+
230+
/* 移除原有的 modal 默认样式干扰 */
231+
.modal-panel { box-shadow: none !important; animation: zoomIn 0.3s var(--ease-expo); }
232+
@keyframes zoomIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }

0 commit comments

Comments
 (0)