返回 oh-my-ppt
preview.html
1 <!DOCTYPE html>
2 <html lang="zh">
3 <head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=1600, height=900">
6 <title>秋日旅行手账</title>
7 <style>
8 * { margin: 0; padding: 0; box-sizing: border-box; }
9 html, body {
10 width: 1600px; height: 900px;
11 overflow: hidden;
12 font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;
13 background: #F5E6C8;
14 }
15 .canvas {
16 position: relative;
17 width: 1600px; height: 900px;
18 background: #F5E6C8;
19 overflow: hidden;
20 }
21
22 /* ── 手绘装饰元素 ── */
23
24 /* 枫叶 (左上) */
25 .leaf-1 {
26 position: absolute; top: 38px; left: 52px;
27 width: 60px; height: 60px;
28 }
29 .leaf-1::before {
30 content: "";
31 display: block;
32 width: 60px; height: 60px;
33 background: #E87D3E;
34 border-radius: 0 50% 50% 50%;
35 transform: rotate(-15deg);
36 opacity: 0.7;
37 }
38 .leaf-1::after {
39 content: "";
40 position: absolute; top: 28px; left: 28px;
41 width: 4px; height: 24px;
42 background: #8B5E3C;
43 border-radius: 2px;
44 transform: rotate(-15deg);
45 }
46
47 /* 枫叶 (右上) */
48 .leaf-2 {
49 position: absolute; top: 50px; right: 80px;
50 width: 48px; height: 48px;
51 }
52 .leaf-2::before {
53 content: "";
54 display: block;
55 width: 48px; height: 48px;
56 background: #C04851;
57 border-radius: 0 50% 50% 50%;
58 transform: rotate(25deg);
59 opacity: 0.6;
60 }
61 .leaf-2::after {
62 content: "";
63 position: absolute; top: 22px; left: 22px;
64 width: 3px; height: 20px;
65 background: #8B5E3C;
66 border-radius: 2px;
67 transform: rotate(25deg);
68 }
69
70 /* 小星星装饰 */
71 .star {
72 position: absolute;
73 width: 18px; height: 18px;
74 }
75 .star::before {
76 content: "★";
77 font-size: 18px;
78 color: #E87D3E;
79 opacity: 0.5;
80 }
81 .star-1 { top: 120px; left: 300px; }
82 .star-2 { top: 200px; right: 260px; }
83 .star-3 { bottom: 130px; left: 480px; }
84 .star-4 { bottom: 80px; right: 180px; }
85
86 /* 爱心装饰 */
87 .heart {
88 position: absolute;
89 width: 22px; height: 20px;
90 }
91 .heart::before {
92 content: "♥";
93 font-size: 20px;
94 color: #C04851;
95 opacity: 0.4;
96 }
97 .heart-1 { top: 85px; left: 160px; }
98 .heart-2 { bottom: 160px; right: 340px; }
99 .heart-3 { top: 260px; left: 520px; }
100
101 /* ── 虚线路径 ── */
102 .dotted-path {
103 position: absolute;
104 border: 0;
105 border-top: 3px dashed #8B5E3C;
106 opacity: 0.35;
107 }
108 .path-1 {
109 top: 310px; left: 130px;
110 width: 340px; height: 0;
111 transform: rotate(-5deg);
112 }
113 .path-2 {
114 top: 310px; left: 470px;
115 width: 280px; height: 0;
116 transform: rotate(3deg);
117 }
118 .path-3 {
119 top: 480px; left: 100px;
120 width: 400px; height: 0;
121 transform: rotate(-2deg);
122 }
123 .path-4 {
124 top: 480px; left: 500px;
125 width: 350px; height: 0;
126 transform: rotate(4deg);
127 }
128
129 /* 路径上的小圆点 (连接点) */
130 .dot {
131 position: absolute;
132 width: 10px; height: 10px;
133 background: #8B5E3C;
134 border-radius: 50%;
135 opacity: 0.4;
136 }
137 .dot-1 { top: 306px; left: 130px; }
138 .dot-2 { top: 306px; left: 470px; }
139 .dot-3 { top: 476px; left: 100px; }
140 .dot-4 { top: 476px; left: 500px; }
141
142 /* ── 标题区域 (手绘标签) ── */
143 .title-tag {
144 position: absolute;
145 top: 60px; left: 120px;
146 background: #C04851;
147 padding: 10px 28px 10px 24px;
148 border-radius: 0 20px 20px 0;
149 }
150 .title-tag::before {
151 content: "";
152 position: absolute;
153 left: -12px; top: 50%;
154 transform: translateY(-50%);
155 width: 0; height: 0;
156 border-top: 18px solid transparent;
157 border-bottom: 18px solid transparent;
158 border-right: 12px solid #C04851;
159 }
160 .title-tag h1 {
161 font-size: 36px; font-weight: 700;
162 color: #FFF; letter-spacing: 4px;
163 }
164
165 /* ── 副标题 ── */
166 .subtitle {
167 position: absolute;
168 top: 130px; left: 140px;
169 font-size: 18px;
170 color: #8B5E3C;
171 font-weight: 500;
172 letter-spacing: 2px;
173 background: rgba(255,255,255,0.45);
174 padding: 6px 18px;
175 border-radius: 30px;
176 border: 2px dashed #8B5E3C;
177 }
178
179 /* ── 主卡片 ── */
180 .card-main {
181 position: absolute;
182 top: 190px; left: 110px;
183 width: 460px;
184 background: rgba(255,255,255,0.55);
185 border-radius: 24px;
186 padding: 28px 30px 30px 30px;
187 border: 2.5px solid #8B5E3C;
188 }
189 .card-main .note-mark {
190 position: absolute;
191 top: -14px; right: 20px;
192 font-size: 22px; color: #E87D3E;
193 background: #F5E6C8;
194 padding: 0 8px;
195 }
196 .card-main p {
197 font-size: 15px; line-height: 1.8;
198 color: #4A3728;
199 }
200 .card-main .hl-orange {
201 display: inline-block;
202 background: #E87D3E; color: #FFF;
203 font-weight: 700; padding: 0 8px;
204 border-radius: 6px;
205 }
206 .card-main .hl-blue {
207 display: inline-block;
208 background: #6BA3BE; color: #FFF;
209 font-weight: 700; padding: 0 8px;
210 border-radius: 6px;
211 }
212
213 /* ── 对话框 (第二天) ── */
214 .speech-bubble {
215 position: absolute;
216 top: 200px; right: 120px;
217 width: 300px;
218 background: #FFF;
219 border: 2.5px solid #8B5E3C;
220 border-radius: 24px;
221 padding: 22px 24px;
222 }
223 .speech-bubble::after {
224 content: "";
225 position: absolute;
226 bottom: -16px; left: 40px;
227 width: 0; height: 0;
228 border-left: 14px solid transparent;
229 border-right: 14px solid transparent;
230 border-top: 16px solid #FFF;
231 }
232 .speech-bubble::before {
233 content: "";
234 position: absolute;
235 bottom: -20px; left: 37px;
236 width: 0; height: 0;
237 border-left: 17px solid transparent;
238 border-right: 17px solid transparent;
239 border-top: 19px solid #8B5E3C;
240 }
241 .bubble-label {
242 display: inline-block;
243 background: #6BA3BE;
244 color: #FFF;
245 font-weight: 700;
246 font-size: 14px;
247 padding: 3px 14px;
248 border-radius: 30px;
249 margin-bottom: 10px;
250 letter-spacing: 1px;
251 }
252 .speech-bubble p {
253 font-size: 14px;
254 line-height: 1.8;
255 color: #4A3728;
256 }
257 .speech-bubble .exclaim {
258 display: inline-block;
259 background: #C04851;
260 color: #FFF;
261 font-weight: 700;
262 padding: 1px 10px;
263 border-radius: 30px;
264 font-size: 14px;
265 }
266
267 /* ── 底部信息卡片 ── */
268 .card-bottom {
269 position: absolute;
270 bottom: 60px; left: 120px;
271 width: 380px;
272 background: rgba(255,255,255,0.5);
273 border-radius: 20px;
274 padding: 18px 22px;
275 border: 2px dashed #8B5E3C;
276 }
277 .card-bottom .tag-row {
278 display: flex;
279 gap: 10px;
280 margin-bottom: 10px;
281 }
282 .card-bottom .tag {
283 color: #FFF; font-size: 12px;
284 font-weight: 700; padding: 2px 14px;
285 border-radius: 30px;
286 background: #E87D3E;
287 }
288 .card-bottom .tag-b { background: #6BA3BE; }
289 .card-bottom .tag-r { background: #C04851; }
290 .card-bottom p {
291 font-size: 13px;
292 color: #4A3728;
293 line-height: 1.7;
294 }
295
296 /* ── 右侧插图 (手绘小房子) ── */
297 .illustration {
298 position: absolute;
299 bottom: 50px; right: 100px;
300 width: 200px; height: 160px;
301 }
302 /* 房子主体 */
303 .house-body {
304 position: absolute;
305 bottom: 0; left: 40px;
306 width: 120px; height: 90px;
307 background: #E87D3E;
308 border-radius: 6px;
309 border: 3px solid #8B5E3C;
310 }
311 /* 屋顶 */
312 .house-roof {
313 position: absolute;
314 bottom: 90px; left: 30px;
315 width: 0; height: 0;
316 border-left: 70px solid transparent;
317 border-right: 70px solid transparent;
318 border-bottom: 50px solid #C04851;
319 filter: drop-shadow(0 2px 0 #8B5E3C);
320 }
321 /* 烟囱 */
322 .house-chimney {
323 position: absolute;
324 bottom: 110px; left: 120px;
325 width: 20px; height: 40px;
326 background: #8B5E3C;
327 border-radius: 4px 4px 0 0;
328 }
329 /* 烟 */
330 .smoke {
331 position: absolute;
332 bottom: 148px; left: 124px;
333 width: 12px; height: 12px;
334 background: rgba(139,94,60,0.25);
335 border-radius: 50%;
336 }
337 .smoke-2 {
338 bottom: 158px; left: 132px;
339 width: 10px; height: 10px;
340 }
341 /* 门 */
342 .house-door {
343 position: absolute;
344 bottom: 0; left: 80px;
345 width: 30px; height: 50px;
346 background: #8B5E3C;
347 border-radius: 4px 4px 0 0;
348 border: 2px solid #4A3728;
349 }
350 /* 窗户 */
351 .house-window {
352 position: absolute;
353 bottom: 45px; left: 55px;
354 width: 22px; height: 22px;
355 background: #6BA3BE;
356 border: 2.5px solid #8B5E3C;
357 border-radius: 4px;
358 }
359 .house-window2 {
360 left: 115px;
361 }
362 /* 窗框十字 */
363 .window-cross {
364 position: absolute;
365 bottom: 45px; left: 55px;
366 width: 22px; height: 22px;
367 }
368 .window-cross2 { left: 115px; }
369 .window-cross::before {
370 content: "";
371 position: absolute;
372 left: 50%; top: 0;
373 width: 2px; height: 100%;
374 background: #8B5E3C;
375 transform: translateX(-50%);
376 }
377 .window-cross::after {
378 content: "";
379 position: absolute;
380 top: 50%; left: 0;
381 width: 100%; height: 2px;
382 background: #8B5E3C;
383 transform: translateY(-50%);
384 }
385
386 /* ── 地面线 ── */
387 .ground {
388 position: absolute;
389 bottom: 42px; right: 60px;
390 width: 220px;
391 border-top: 3px dashed #8B5E3C;
392 opacity: 0.3;
393 }
394
395 /* ── 小树 ── */
396 .tree {
397 position: absolute;
398 bottom: 50px; right: 280px;
399 }
400 .tree-trunk {
401 width: 10px; height: 30px;
402 background: #8B5E3C;
403 border-radius: 3px;
404 margin: 0 auto;
405 }
406 .tree-top {
407 width: 40px; height: 40px;
408 background: #E87D3E;
409 border-radius: 50%;
410 margin: 0 auto -6px auto;
411 border: 2px solid #8B5E3C;
412 opacity: 0.7;
413 }
414
415 /* ── 小云朵 ── */
416 .cloud {
417 position: absolute;
418 width: 60px; height: 24px;
419 background: rgba(107,163,190,0.2);
420 border-radius: 30px;
421 }
422 .cloud::before {
423 content: "";
424 position: absolute;
425 top: -12px; left: 12px;
426 width: 30px; height: 30px;
427 background: rgba(107,163,190,0.2);
428 border-radius: 50%;
429 }
430 .cloud::after {
431 content: "";
432 position: absolute;
433 top: -8px; left: 28px;
434 width: 20px; height: 20px;
435 background: rgba(107,163,190,0.2);
436 border-radius: 50%;
437 }
438 .cloud-1 { top: 160px; right: 360px; }
439 .cloud-2 { top: 100px; left: 600px; width: 50px; height: 20px; }
440
441 /* ── 虚线小箭头 ── */
442 .arrow {
443 position: absolute;
444 width: 0; height: 0;
445 border-left: 8px solid transparent;
446 border-right: 8px solid transparent;
447 border-top: 10px solid #8B5E3C;
448 opacity: 0.35;
449 }
450 .arrow-1 { top: 310px; left: 470px; transform: translateX(-50%); }
451 .arrow-2 { top: 480px; left: 500px; transform: translateX(-50%); }
452
453 /* ── 手绘圆圈 ── */
454 .doodle-circle {
455 position: absolute;
456 border-radius: 50%;
457 border: 2.5px dashed #8B5E3C;
458 opacity: 0.2;
459 }
460 .dc-1 { top: 340px; right: 480px; width: 80px; height: 80px; }
461 .dc-2 { bottom: 200px; left: 560px; width: 50px; height: 50px; }
462 </style>
463 </head>
464 <body>
465 <div class="canvas">
466
467 <!-- 装饰:枫叶 -->
468 <div class="leaf-1"></div>
469 <div class="leaf-2"></div>
470
471 <!-- 装饰:星星 -->
472 <div class="star star-1"></div>
473 <div class="star star-2"></div>
474 <div class="star star-3"></div>
475 <div class="star star-4"></div>
476
477 <!-- 装饰:爱心 -->
478 <div class="heart heart-1"></div>
479 <div class="heart heart-2"></div>
480 <div class="heart heart-3"></div>
481
482 <!-- 虚线路径 -->
483 <div class="dotted-path path-1"></div>
484 <div class="dotted-path path-2"></div>
485 <div class="dotted-path path-3"></div>
486 <div class="dotted-path path-4"></div>
487
488 <div class="dot dot-1"></div>
489 <div class="dot dot-2"></div>
490 <div class="dot dot-3"></div>
491 <div class="dot dot-4"></div>
492
493 <div class="arrow arrow-1"></div>
494 <div class="arrow arrow-2"></div>
495
496 <!-- 手绘圆圈 -->
497 <div class="doodle-circle dc-1"></div>
498 <div class="doodle-circle dc-2"></div>
499
500 <!-- 云朵 -->
501 <div class="cloud cloud-1"></div>
502 <div class="cloud cloud-2"></div>
503
504 <!-- ===== 标题 ===== -->
505 <div class="title-tag">
506 <h1>秋日漫游记</h1>
507 </div>
508 <div class="subtitle">用画笔记录每一片落叶的故事</div>
509
510 <!-- ===== 主卡片 ===== -->
511 <div class="card-main">
512 <div class="note-mark">&#x270E;</div>
513 <p>
514 背上背包,踏上开往山野的列车。<br>
515 第一站是 <span class="hl-orange">枫叶谷</span>,漫山遍野的暖橙色铺成一片柔软的海洋。<br>
516 沿着溪流走了整整一个下午,捡到了 <span class="hl-blue">七种不同形状</span> 的叶子。<br>
517 傍晚时分,山间小屋的烟囱升起袅袅炊烟——<br>
518 旅店阿姨端来热腾腾的南瓜汤,<span class="hl-orange">超暖!</span>
519 </p>
520 </div>
521
522 <!-- ===== 对话框 ===== -->
523 <div class="speech-bubble">
524 <div class="bubble-label">&#x2605; 第二天</div>
525 <p>
526 清晨被鸟鸣叫醒,推开窗就看到<br>
527 湖面飘着一层薄雾。<br>
528 坐小木船划过对岸,<br>
529 偶遇一片 <span class="exclaim">超美!</span> 的红杉林。<br>
530 在树下野餐时,一只小松鼠<br>
531 悄悄叼走了我的饼干~
532 </p>
533 </div>
534
535 <!-- ===== 底部信息卡片 ===== -->
536 <div class="card-bottom">
537 <div class="tag-row">
538 <span class="tag">&#x1F342; 赏枫</span>
539 <span class="tag tag-b">&#x2601; 徒步</span>
540 <span class="tag tag-r">&#x2665; 美食</span>
541 </div>
542 <p>
543 最佳季节:10 月中旬至 11 月初<br>
544 推荐路线:枫叶谷 → 镜湖 → 红杉秘境<br>
545 随身好物:手账本 &amp; 水彩笔
546 </p>
547 </div>
548
549 <!-- ===== 小房子插图 ===== -->
550 <div class="illustration">
551 <div class="house-chimney"></div>
552 <div class="smoke smoke-1"></div>
553 <div class="smoke smoke-2"></div>
554 <div class="house-roof"></div>
555 <div class="house-body"></div>
556 <div class="house-door"></div>
557 <div class="house-window"></div>
558 <div class="house-window house-window2"></div>
559 <div class="window-cross"></div>
560 <div class="window-cross window-cross2"></div>
561 <div class="ground"></div>
562 </div>
563
564 <!-- 小树 -->
565 <div class="tree">
566 <div class="tree-top"></div>
567 <div class="tree-trunk"></div>
568 </div>
569
570 </div>
571 </body>
572 </html>
573
573 lines HTML