返回 oh-my-ppt
preview.html
1 <!DOCTYPE html>
2 <html lang="zh-CN">
3 <head>
4 <meta charset="UTF-8" />
5 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6 <title>Catppuccin 摩卡 · catppuccin-mocha</title>
7 <style>
8 *{box-sizing:border-box;margin:0}
9 html,body{width:100%;height:100%;overflow:hidden}
10 html{display:grid;place-items:center;background:#0f1117}
11 body{display:grid;place-items:center;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#c6d0f5;background:#0f1117}
12
13 .slide {
14 position: relative;
15 width: min(100vw, calc(100vh * 16 / 9));
16 aspect-ratio: 16/9;
17 overflow: hidden;
18 background: #303446;
19 box-shadow: 0 0 0 1px rgba(198,208,245,.06);
20 }
21
22 /* Soft floating dots - left cluster */
23 .slide::before {
24 content: "";
25 position: absolute;
26 width: 35%; height: 50%;
27 top: 5%; left: 5%;
28 background:
29 radial-gradient(circle 20px at 15% 25%, rgba(140,170,238,.15) 0%, transparent 100%),
30 radial-gradient(circle 14px at 55% 60%, rgba(153,209,219,.12) 0%, transparent 100%),
31 radial-gradient(circle 18px at 80% 30%, rgba(198,208,245,.08) 0%, transparent 100%),
32 radial-gradient(circle 10px at 35% 80%, rgba(140,170,238,.1) 0%, transparent 100%);
33 pointer-events: none;
34 }
35
36 /* Soft floating dots - right cluster */
37 .slide::after {
38 content: "";
39 position: absolute;
40 width: 30%; height: 45%;
41 bottom: 10%; right: 8%;
42 background:
43 radial-gradient(circle 16px at 30% 40%, rgba(153,209,219,.12) 0%, transparent 100%),
44 radial-gradient(circle 22px at 70% 20%, rgba(140,170,238,.1) 0%, transparent 100%),
45 radial-gradient(circle 12px at 50% 75%, rgba(198,208,245,.08) 0%, transparent 100%);
46 pointer-events: none;
47 }
48
49 .content {
50 position: absolute;
51 inset: 8% 7%;
52 z-index: 2;
53 display: grid;
54 grid-template-columns: 1.1fr .9fr;
55 gap: 6%;
56 align-items: stretch;
57 }
58
59 .hero {
60 display: flex;
61 flex-direction: column;
62 justify-content: space-between;
63 }
64
65 .eyebrow {
66 font-size: clamp(7px, .95vw, 11px);
67 font-weight: 700;
68 letter-spacing: .15em;
69 text-transform: uppercase;
70 color: #8caaee;
71 margin-bottom: 3%;
72 display: flex;
73 align-items: center;
74 gap: 8px;
75 }
76 .eyebrow::before {
77 content: "";
78 width: 8px; height: 8px;
79 border-radius: 50%;
80 background: #8caaee;
81 box-shadow: 0 0 8px #8caaee;
82 }
83
84 h1 {
85 font-size: clamp(32px, 5.5vw, 68px);
86 line-height: .92;
87 font-weight: 900;
88 color: #c6d0f5;
89 letter-spacing: -.02em;
90 }
91
92 .desc {
93 margin-top: 4%;
94 font-size: clamp(10px, 1.35vw, 15px);
95 line-height: 1.7;
96 color: rgba(198,208,245,.65);
97 max-width: 92%;
98 }
99
100 .tags {
101 display: flex;
102 flex-wrap: wrap;
103 gap: 8px;
104 margin-top: 5%;
105 }
106 .tags span {
107 border: 1px solid rgba(140,170,238,.15);
108 background: rgba(140,170,238,.06);
109 border-radius: 14px;
110 padding: 5px 12px;
111 font-size: clamp(7px, .85vw, 10px);
112 font-weight: 600;
113 color: rgba(198,208,245,.8);
114 }
115
116 .story {
117 display: grid;
118 grid-template-columns: 1fr 1fr;
119 gap: 3%;
120 margin-top: 5%;
121 }
122 .story p {
123 border-left: 2px solid #8caaee;
124 padding-left: 8px;
125 font-size: clamp(8px, .95vw, 11px);
126 line-height: 1.5;
127 color: rgba(198,208,245,.55);
128 }
129
130 .chips {
131 display: flex;
132 gap: 10px;
133 margin-top: 4%;
134 }
135 .chips span {
136 font-size: clamp(7px, .85vw, 10px);
137 color: rgba(198,208,245,.45);
138 border-bottom: 1px solid rgba(140,170,238,.12);
139 padding-bottom: 2px;
140 }
141
142 /* Right panel - cozy rounded card */
143 .panel {
144 position: relative;
145 overflow: hidden;
146 border: 1px solid rgba(140,170,238,.1);
147 border-radius: 16px;
148 background: rgba(48,52,70,.7);
149 backdrop-filter: blur(12px);
150 padding: 7%;
151 display: grid;
152 grid-template-rows: auto 1fr auto;
153 gap: 5%;
154 }
155 .panel::before {
156 content: "";
157 position: absolute;
158 top: 0; left: 0; right: 0;
159 height: 4px;
160 background: linear-gradient(90deg, #8caaee, #99d1db, #8caaee);
161 border-radius: 16px 16px 0 0;
162 }
163
164 .kicker {
165 font-size: clamp(8px, 1vw, 11px);
166 font-weight: 800;
167 letter-spacing: .12em;
168 text-transform: uppercase;
169 color: #8caaee;
170 }
171
172 .layout {
173 font-size: clamp(9px, 1.05vw, 13px);
174 line-height: 1.6;
175 color: rgba(198,208,245,.6);
176 }
177
178 /* Scattered color dots decoration */
179 .visual {
180 position: relative;
181 min-height: 0;
182 border: 1px solid rgba(140,170,238,.08);
183 border-radius: 14px;
184 overflow: hidden;
185 background: rgba(0,0,0,.2);
186 }
187
188 .dot-field {
189 position: absolute;
190 inset: 0;
191 display: flex;
192 flex-wrap: wrap;
193 align-items: center;
194 justify-content: center;
195 gap: clamp(8px, 1.5vw, 18px);
196 padding: 8%;
197 }
198 .dot-field i {
199 display: block;
200 border-radius: 50%;
201 background: var(--c);
202 opacity: .6;
203 box-shadow: 0 0 12px var(--c);
204 }
205 .dot-field i:nth-child(1) { width: clamp(12px,2vw,22px); height: clamp(12px,2vw,22px) }
206 .dot-field i:nth-child(2) { width: clamp(8px,1.2vw,14px); height: clamp(8px,1.2vw,14px); opacity:.4 }
207 .dot-field i:nth-child(3) { width: clamp(10px,1.6vw,18px); height: clamp(10px,1.6vw,18px) }
208 .dot-field i:nth-child(4) { width: clamp(14px,2.2vw,24px); height: clamp(14px,2.2vw,24px); opacity:.5 }
209 .dot-field i:nth-child(5) { width: clamp(6px,1vw,12px); height: clamp(6px,1vw,12px); opacity:.7 }
210 .dot-field i:nth-child(6) { width: clamp(10px,1.5vw,16px); height: clamp(10px,1.5vw,16px); opacity:.35 }
211
212 .palette {
213 display: flex;
214 gap: 7px;
215 }
216 .palette i {
217 display: block;
218 width: clamp(14px, 2vw, 22px);
219 height: clamp(14px, 2vw, 22px);
220 border-radius: 50%;
221 background: var(--c);
222 border: 1px solid rgba(255,255,255,.08);
223 box-shadow: 0 0 10px var(--c);
224 }
225
226 .footer {
227 position: absolute;
228 left: 7%; right: 7%;
229 bottom: 4.5%;
230 z-index: 3;
231 display: flex;
232 align-items: center;
233 justify-content: space-between;
234 font-size: clamp(7px, .85vw, 10px);
235 font-weight: 700;
236 color: rgba(198,208,245,.35);
237 letter-spacing: .08em;
238 text-transform: uppercase;
239 }
240 .footer b { color: rgba(198,208,245,.7) }
241
242 @media(max-aspect-ratio:16/9){.slide{width:min(100vw,calc(100vh*16/9));height:auto}}
243 @media(min-aspect-ratio:16/9){.slide{height:min(100vh,calc(100vw*9/16));width:auto}}
244 </style>
245 </head>
246 <body>
247 <main class="slide" aria-label="Catppuccin 摩卡 style preview">
248 <section class="content">
249 <div class="hero">
250 <div>
251 <div class="eyebrow">冷色 · 深色 · catppuccin-mocha</div>
252 <h1>Catppuccin 摩卡</h1>
253 <p class="desc">摩卡柔雾中的粉彩光点,长时间凝视也不会疲倦</p>
254 <div class="tags">
255 <span>开发者内部分享</span>
256 <span>长时间技术培训</span>
257 <span>代码 Review 演示</span>
258 </div>
259 <div class="story">
260 <p>标题 #c6d0f5 柔蓝白、正文 #a5adce 灰蓝,强调色 #8caaee 柔蓝与 #99d1db 浅青是摩卡中的两颗糖果。</p>
261 <p>等宽或开发者友好字体,字重偏轻到中等。柔和护眼。</p>
262 </div>
263 </div>
264 <div class="chips">
265 <span>fade-up</span>
266 <span>stagger-list</span>
267 <span>soft-glow</span>
268 </div>
269 </div>
270 <aside class="panel">
271 <div>
272 <div class="kicker">Style DNA</div>
273 <div class="layout">Catppuccin 摩卡是一杯深色热可可中的粉彩光点——深灰底色如摩卡咖啡的表面,柔和蓝色和青色轻轻浮动。</div>
274 </div>
275 <div class="visual">
276 <div class="dot-field">
277 <i style="--c:#c6d0f5"></i>
278 <i style="--c:#99d1db"></i>
279 <i style="--c:#8caaee"></i>
280 <i style="--c:#a5adce"></i>
281 <i style="--c:#8caaee"></i>
282 <i style="--c:#99d1db"></i>
283 </div>
284 </div>
285 <div class="palette">
286 <i style="--c:#c6d0f5"></i>
287 <i style="--c:#a5adce"></i>
288 <i style="--c:#8caaee"></i>
289 <i style="--c:#99d1db"></i>
290 <i style="--c:#303446"></i>
291 </div>
292 </aside>
293 </section>
294 <div class="footer">
295 <span><b>Layout</b> 暗色卡片在更暗的背景上,层级靠柔和色彩区分而非硬边框。</span>
296 <span>16:9 preview</span>
297 </div>
298 </main>
299 </body>
300 </html>
301
301 lines HTML