返回 oh-my-ppt
preview.html
根目录 / resources / styles / tokyo-night / 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>东京夜 · tokyo-night</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:#e2e8f0;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: linear-gradient(160deg, #020617 0%, #0f172a 35%, #1e293b 70%, #0f172a 100%);
19 box-shadow: 0 0 0 1px rgba(255,255,255,.06), 0 0 80px rgba(34,211,238,.06);
20 }
21
22 .slide::before {
23 content: "";
24 position: absolute;
25 top: 0; left: 0; right: 0;
26 height: 3px;
27 background: linear-gradient(90deg, transparent, #22d3ee, #3b82f6, #22d3ee, transparent);
28 box-shadow: 0 0 20px #22d3ee, 0 0 60px rgba(34,211,238,.3);
29 }
30
31 .slide::after {
32 content: "";
33 position: absolute;
34 width: 40%; height: 60%;
35 top: -10%; right: -5%;
36 background: radial-gradient(circle, rgba(34,211,238,.08) 0%, transparent 70%);
37 pointer-events: none;
38 }
39
40 .content {
41 position: absolute;
42 inset: 8% 7%;
43 z-index: 2;
44 display: grid;
45 grid-template-columns: 1.1fr .9fr;
46 gap: 6%;
47 align-items: stretch;
48 }
49
50 .hero {
51 display: flex;
52 flex-direction: column;
53 justify-content: space-between;
54 }
55
56 .eyebrow {
57 font-size: clamp(7px, .95vw, 11px);
58 font-weight: 700;
59 letter-spacing: .15em;
60 text-transform: uppercase;
61 color: #22d3ee;
62 margin-bottom: 3%;
63 }
64
65 h1 {
66 font-size: clamp(32px, 5.5vw, 68px);
67 line-height: .92;
68 font-weight: 900;
69 color: #e2e8f0;
70 text-shadow: 0 0 40px rgba(34,211,238,.15), 0 0 80px rgba(34,211,238,.08);
71 letter-spacing: -.02em;
72 }
73
74 .desc {
75 margin-top: 4%;
76 font-size: clamp(10px, 1.35vw, 15px);
77 line-height: 1.7;
78 color: rgba(226,232,240,.7);
79 max-width: 92%;
80 }
81
82 .tags {
83 display: flex;
84 flex-wrap: wrap;
85 gap: 8px;
86 margin-top: 5%;
87 }
88 .tags span {
89 border: 1px solid rgba(34,211,238,.2);
90 background: rgba(34,211,238,.06);
91 border-radius: 6px;
92 padding: 4px 10px;
93 font-size: clamp(7px, .85vw, 10px);
94 font-weight: 600;
95 color: rgba(226,232,240,.8);
96 }
97
98 .story {
99 display: grid;
100 grid-template-columns: 1fr 1fr;
101 gap: 3%;
102 margin-top: 5%;
103 }
104 .story p {
105 border-left: 2px solid #22d3ee;
106 padding-left: 8px;
107 font-size: clamp(8px, .95vw, 11px);
108 line-height: 1.5;
109 color: rgba(226,232,240,.6);
110 }
111
112 .chips {
113 display: flex;
114 gap: 10px;
115 margin-top: 4%;
116 }
117 .chips span {
118 font-size: clamp(7px, .85vw, 10px);
119 color: rgba(226,232,240,.5);
120 border-bottom: 1px solid rgba(34,211,238,.15);
121 padding-bottom: 2px;
122 }
123
124 .panel {
125 position: relative;
126 overflow: hidden;
127 border: 1px solid rgba(34,211,238,.12);
128 border-radius: 10px;
129 background: rgba(2,6,23,.6);
130 backdrop-filter: blur(12px);
131 padding: 6%;
132 display: grid;
133 grid-template-rows: auto 1fr auto;
134 gap: 5%;
135 }
136 .panel::before {
137 content: "";
138 position: absolute;
139 top: 0; left: 0; right: 0;
140 height: 4px;
141 background: linear-gradient(90deg, #22d3ee, #3b82f6);
142 }
143
144 .kicker {
145 font-size: clamp(8px, 1vw, 11px);
146 font-weight: 800;
147 letter-spacing: .12em;
148 text-transform: uppercase;
149 color: #22d3ee;
150 }
151
152 .layout {
153 font-size: clamp(9px, 1.05vw, 13px);
154 line-height: 1.6;
155 color: rgba(226,232,240,.6);
156 }
157
158 .visual {
159 position: relative;
160 min-height: 0;
161 border: 1px solid rgba(34,211,238,.1);
162 border-radius: 8px;
163 overflow: hidden;
164 background: rgba(0,0,0,.35);
165 }
166
167 .terminal {
168 position: absolute;
169 inset: 8%;
170 padding: 8%;
171 color: #22d3ee;
172 font-family: "SFMono-Regular", "Consolas", "Menlo", monospace;
173 }
174 .dots b {
175 display: inline-block;
176 width: 7px; height: 7px;
177 border-radius: 50%;
178 margin-right: 5px;
179 }
180 .dots b:nth-child(1) { background: #ff5f57 }
181 .dots b:nth-child(2) { background: #febc2e }
182 .dots b:nth-child(3) { background: #28c840 }
183 .terminal pre {
184 font-size: clamp(7px, 1vw, 12px);
185 line-height: 1.9;
186 white-space: pre-wrap;
187 margin-top: 6px;
188 }
189 .terminal .prompt { color: #3b82f6 }
190 .terminal .output { color: rgba(226,232,240,.7) }
191 .terminal .highlight { color: #e2e8f0 }
192
193 .palette {
194 display: flex;
195 gap: 7px;
196 }
197 .palette i {
198 display: block;
199 width: clamp(14px, 2vw, 22px);
200 height: clamp(14px, 2vw, 22px);
201 border-radius: 50%;
202 background: var(--c);
203 border: 1px solid rgba(255,255,255,.1);
204 box-shadow: 0 0 8px var(--c);
205 }
206
207 .footer {
208 position: absolute;
209 left: 7%; right: 7%;
210 bottom: 4.5%;
211 z-index: 3;
212 display: flex;
213 align-items: center;
214 justify-content: space-between;
215 font-size: clamp(7px, .85vw, 10px);
216 font-weight: 700;
217 color: rgba(226,232,240,.45);
218 letter-spacing: .08em;
219 text-transform: uppercase;
220 }
221 .footer b { color: rgba(226,232,240,.8) }
222
223 @media(max-aspect-ratio:16/9){.slide{width:min(100vw,calc(100vh*16/9));height:auto}}
224 @media(min-aspect-ratio:16/9){.slide{height:min(100vh,calc(100vw*9/16));width:auto}}
225 </style>
226 </head>
227 <body>
228 <main class="slide" aria-label="东京夜 style preview">
229 <section class="content">
230 <div class="hero">
231 <div>
232 <div class="eyebrow">冷色 · 深色 · tokyo-night</div>
233 <h1>东京夜</h1>
234 <p class="desc">深蓝底幕上浮起青色光晕,属于深夜程序员的视觉独白</p>
235 <div class="tags">
236 <span>技术分享</span>
237 <span>基础设施演讲</span>
238 <span>开发者社区 Meetup</span>
239 </div>
240 <div class="story">
241 <p>标题 #e2e8f0 冷白、正文 #cbd5e1 灰白,强调色 #22d3ee 亮青与 #3b82f6 蓝色是深夜屏幕上的两种光。</p>
242 <p>等宽或现代无衬线字体,带一点技术感。适合深夜编码场景。</p>
243 </div>
244 </div>
245 <div class="chips">
246 <span>fade-up</span>
247 <span>stagger-list</span>
248 <span>glow-pulse</span>
249 </div>
250 </div>
251 <aside class="panel">
252 <div>
253 <div class="kicker">Style DNA</div>
254 <div class="layout">东京夜是深夜两点屏幕前的视觉独白——深邃的蓝黑底幕上,青色光晕从角落浮起,如同东京深夜便利店的灯光。</div>
255 </div>
256 <div class="visual">
257 <div class="terminal">
258 <div class="dots"><b></b><b></b><b></b></div>
259 <pre><span class="prompt">$</span> style inspect tokyo-night
260 <span class="output">&gt; palette locked</span>
261 <span class="output">&gt; motion fade-up</span>
262 <span class="highlight">render 1600x900</span></pre>
263 </div>
264 </div>
265 <div class="palette">
266 <i style="--c:#e2e8f0"></i>
267 <i style="--c:#cbd5e1"></i>
268 <i style="--c:#22d3ee"></i>
269 <i style="--c:#3b82f6"></i>
270 <i style="--c:#1e293b"></i>
271 </div>
272 </aside>
273 </section>
274 <div class="footer">
275 <span><b>Layout</b> 暗色卡片浮在更暗的背景上,层级靠微妙的亮度差和青色边框区分。</span>
276 <span>16:9 preview</span>
277 </div>
278 </main>
279 </body>
280 </html>
281
281 lines HTML