返回 VideoClaw
image_purple.html
根目录 / video-claw / video-claw / backend / templates / 1080x1920 / image_purple.html
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="UTF-8">
5 <meta name="template:media-width" content="1024">
6 <meta name="template:media-height" content="1024">
7 <style>
8 html {
9 margin: 0;
10 padding: 0;
11 }
12
13 body {
14 margin: 0;
15 padding: 0;
16 width: 1080px;
17 background: #302b63;
18 font-family: 'PingFang SC', 'Source Han Sans', 'Microsoft YaHei', sans-serif;
19 position: relative;
20 overflow: hidden;
21 }
22
23 .page-container {
24 width: 1080px;
25 height: 1920px;
26 padding: 60px 60px 70px 60px;
27 box-sizing: border-box;
28 display: flex;
29 flex-direction: column;
30 justify-content: space-between;
31 position: relative;
32 z-index: 1;
33 }
34
35 /* Background decorative elements */
36 .bg-decoration {
37 position: absolute;
38 top: 0;
39 left: 0;
40 width: 100%;
41 height: 100%;
42 z-index: 0;
43 overflow: hidden;
44 pointer-events: none;
45 }
46
47 /* Grid pattern background */
48 .dot-pattern {
49 position: absolute;
50 top: 0;
51 left: 0;
52 width: 100%;
53 height: 100%;
54 background-image:
55 linear-gradient(rgba(255, 165, 0, 0.1) 1px, transparent 1px),
56 linear-gradient(90deg, rgba(255, 165, 0, 0.1) 1px, transparent 1px);
57 background-size: 40px 40px;
58 opacity: 0.4;
59 }
60
61 .circle-1 {
62 position: absolute;
63 width: 600px;
64 height: 600px;
65 border-radius: 50%;
66 background: radial-gradient(circle at 30% 30%, rgba(255, 165, 0, 0.15), transparent);
67 top: -250px;
68 right: -200px;
69 border: 3px solid rgba(255, 165, 0, 0.2);
70 box-shadow: inset 0 0 120px rgba(255, 165, 0, 0.1),
71 0 0 60px rgba(255, 165, 0, 0.2);
72 }
73
74 .circle-2 {
75 position: absolute;
76 width: 450px;
77 height: 450px;
78 border-radius: 50%;
79 background: radial-gradient(circle at 60% 60%, rgba(255, 215, 0, 0.2), transparent);
80 bottom: 50px;
81 left: -150px;
82 filter: blur(50px);
83 }
84
85 .circle-3 {
86 position: absolute;
87 width: 300px;
88 height: 300px;
89 border-radius: 50%;
90 border: 4px solid rgba(255, 140, 0, 0.3);
91 background: transparent;
92 top: 35%;
93 right: 40px;
94 box-shadow: 0 0 40px rgba(255, 140, 0, 0.4);
95 }
96
97 .triangle {
98 position: absolute;
99 width: 0;
100 height: 0;
101 border-left: 180px solid transparent;
102 border-right: 180px solid transparent;
103 border-bottom: 300px solid rgba(255, 165, 0, 0.08);
104 top: 45%;
105 left: -60px;
106 transform: rotate(-35deg);
107 filter: blur(3px);
108 }
109
110 .square-1 {
111 position: absolute;
112 width: 160px;
113 height: 160px;
114 background: linear-gradient(135deg, rgba(255, 165, 0, 0.12), transparent);
115 top: 15%;
116 right: -60px;
117 transform: rotate(35deg);
118 border: 3px solid rgba(255, 165, 0, 0.25);
119 box-shadow: 0 0 30px rgba(255, 165, 0, 0.2);
120 }
121
122 .square-2 {
123 position: absolute;
124 width: 100px;
125 height: 100px;
126 border: 4px solid rgba(255, 215, 0, 0.4);
127 background: transparent;
128 bottom: 25%;
129 left: 60px;
130 transform: rotate(-15deg);
131 box-shadow: 0 0 25px rgba(255, 215, 0, 0.3);
132 }
133
134 /* Glowing lines */
135 .line-1, .line-2, .line-3 {
136 position: absolute;
137 height: 3px;
138 background: linear-gradient(90deg, transparent, rgba(255, 165, 0, 0.6), transparent);
139 box-shadow: 0 0 15px rgba(255, 165, 0, 0.4);
140 }
141
142 .line-1 {
143 width: 400px;
144 top: 20%;
145 right: 100px;
146 transform: rotate(15deg);
147 }
148
149 .line-2 {
150 width: 280px;
151 top: 55%;
152 left: 100px;
153 transform: rotate(-20deg);
154 }
155
156 .line-3 {
157 width: 320px;
158 bottom: 18%;
159 right: 120px;
160 transform: rotate(10deg);
161 }
162
163 /* Hexagon decorations */
164 .hexagon-1, .hexagon-2 {
165 position: absolute;
166 width: 80px;
167 height: 46px;
168 background: rgba(255, 165, 0, 0.1);
169 border-left: 3px solid rgba(255, 165, 0, 0.4);
170 border-right: 3px solid rgba(255, 165, 0, 0.4);
171 }
172
173 .hexagon-1::before, .hexagon-2::before,
174 .hexagon-1::after, .hexagon-2::after {
175 content: "";
176 position: absolute;
177 width: 0;
178 border-left: 40px solid transparent;
179 border-right: 40px solid transparent;
180 }
181
182 .hexagon-1::before, .hexagon-2::before {
183 bottom: 100%;
184 border-bottom: 23px solid rgba(255, 165, 0, 0.4);
185 }
186
187 .hexagon-1::after, .hexagon-2::after {
188 top: 100%;
189 border-top: 23px solid rgba(255, 165, 0, 0.4);
190 }
191
192 .hexagon-1 {
193 top: 25%;
194 left: 120px;
195 }
196
197 .hexagon-2 {
198 bottom: 30%;
199 right: 140px;
200 transform: rotate(30deg);
201 }
202
203 /* Header with tech decoration */
204 .topic-wrapper {
205 position: relative;
206 text-align: center;
207 padding: 40px 0;
208 }
209
210 .topic-decoration {
211 position: absolute;
212 top: -35px;
213 left: 50%;
214 transform: translateX(-50%);
215 display: flex;
216 gap: 10px;
217 align-items: center;
218 }
219
220 .topic-dot {
221 width: 14px;
222 height: 14px;
223 border-radius: 50%;
224 box-shadow: 0 0 20px currentColor;
225 }
226
227 .topic-dot:nth-child(1) {
228 background: #FF8C00;
229 color: #FF8C00;
230 }
231 .topic-dot:nth-child(2) {
232 background: #FFD700;
233 color: #FFD700;
234 width: 18px;
235 height: 18px;
236 }
237 .topic-dot:nth-child(3) {
238 background: #FFA500;
239 color: #FFA500;
240 }
241
242 /* Title accent decoration */
243 .topic-accent {
244 position: absolute;
245 top: 0;
246 left: 50%;
247 transform: translateX(-50%);
248 width: 150px;
249 height: 5px;
250 background: linear-gradient(90deg, transparent, rgba(255, 165, 0, 0.8), transparent);
251 border-radius: 10px;
252 box-shadow: 0 0 20px rgba(255, 165, 0, 0.5);
253 }
254
255 .title {
256 font-size: 78px;
257 font-weight: 700;
258 background: linear-gradient(135deg, #FFD700 0%, #FFA500 50%, #FF8C00 100%);
259 -webkit-background-clip: text;
260 -webkit-text-fill-color: transparent;
261 background-clip: text;
262 line-height: 1.25;
263 letter-spacing: 2px;
264 padding: 25px 0;
265 position: relative;
266 display: inline-block;
267 filter: drop-shadow(0 4px 20px rgba(255, 165, 0, 0.4));
268 }
269
270 .title::before,
271 .title::after {
272 content: '';
273 position: absolute;
274 border-radius: 50%;
275 background: linear-gradient(135deg, rgba(255, 165, 0, 0.6), rgba(255, 215, 0, 0.5));
276 box-shadow: 0 0 25px rgba(255, 165, 0, 0.6);
277 }
278
279 .title::before {
280 top: -15px;
281 left: -25px;
282 width: 25px;
283 height: 25px;
284 }
285
286 .title::after {
287 bottom: -10px;
288 right: -20px;
289 width: 30px;
290 height: 30px;
291 }
292
293 .topic {
294 font-size: 74px;
295 font-weight: bold;
296 color: #FFD700;
297 line-height: 1.3;
298 text-shadow: 0 0 30px rgba(255, 215, 0, 0.5),
299 0 4px 20px rgba(0,0,0,0.4);
300 padding: 20px 0;
301 position: relative;
302 display: inline-block;
303 letter-spacing: 3px;
304 }
305
306 .topic::before,
307 .topic::after {
308 content: '';
309 position: absolute;
310 width: 90px;
311 height: 4px;
312 background: linear-gradient(90deg, transparent, rgba(255, 165, 0, 0.8), rgba(255, 215, 0, 0.6));
313 top: 50%;
314 box-shadow: 0 0 15px rgba(255, 165, 0, 0.6);
315 }
316
317 .topic::before {
318 left: -110px;
319 transform: scaleX(-1);
320 }
321
322 .topic::after {
323 right: -110px;
324 }
325
326 /* Tech badge decoration */
327 .bookmark-deco {
328 position: absolute;
329 top: -10px;
330 left: 70px;
331 }
332
333 /* Image container with tech frame */
334 .image-wrapper {
335 position: relative;
336 }
337
338 .image-container {
339 width: 100%;
340 height: 900px;
341 display: flex;
342 align-items: center;
343 justify-content: center;
344 position: relative;
345 }
346
347 .image-container img {
348 width: 100%;
349 height: 100%;
350 border-radius: 16px;
351 object-fit: cover;
352 box-shadow: 0 0 60px rgba(255, 165, 0, 0.3),
353 0 20px 60px rgba(0, 0, 0, 0.6);
354 border: 2px solid rgba(255, 165, 0, 0.3);
355 }
356
357 /* Corner tech decorations */
358 .corner-deco {
359 position: absolute;
360 width: 80px;
361 height: 80px;
362 border: 5px solid rgba(255, 165, 0, 0.8);
363 z-index: 2;
364 filter: drop-shadow(0 0 15px rgba(255, 165, 0, 0.5));
365 }
366
367 .corner-deco.top-left {
368 top: -20px;
369 left: -20px;
370 border-right: none;
371 border-bottom: none;
372 border-radius: 16px 0 0 0;
373 }
374
375 .corner-deco.bottom-right {
376 bottom: -20px;
377 right: -20px;
378 border-left: none;
379 border-top: none;
380 border-radius: 0 0 16px 0;
381 }
382
383 .corner-deco.top-right {
384 top: -20px;
385 right: -20px;
386 border-left: none;
387 border-bottom: none;
388 border-radius: 0 16px 0 0;
389 width: 40px;
390 height: 40px;
391 border-color: rgba(255, 215, 0, 0.9);
392 }
393
394 .corner-deco.bottom-left {
395 bottom: -20px;
396 left: -20px;
397 border-right: none;
398 border-top: none;
399 border-radius: 0 0 0 16px;
400 width: 40px;
401 height: 40px;
402 border-color: rgba(255, 140, 0, 0.9);
403 }
404
405 /* Side tech indicators */
406 .side-badge-left, .side-badge-right {
407 position: absolute;
408 display: flex;
409 flex-direction: column;
410 gap: 15px;
411 }
412
413 .side-badge-left {
414 left: -30px;
415 top: 50%;
416 transform: translateY(-50%);
417 }
418
419 .side-badge-right {
420 right: -30px;
421 top: 50%;
422 transform: translateY(-50%);
423 }
424
425 .badge-circle {
426 width: 20px;
427 height: 20px;
428 border-radius: 50%;
429 border: 3px solid rgba(255, 165, 0, 0.6);
430 background: transparent;
431 box-shadow: 0 0 12px rgba(255, 165, 0, 0.4);
432 }
433
434 .badge-circle.filled {
435 background: rgba(255, 215, 0, 0.8);
436 box-shadow: 0 0 20px rgba(255, 215, 0, 0.6);
437 }
438
439 /* Quote section */
440 .text-wrapper {
441 position: relative;
442 }
443
444 .text {
445 font-size: 46px;
446 color: #FFF8DC;
447 text-align: center;
448 line-height: 1.8;
449 padding: 35px 70px;
450 position: relative;
451 height: 237.6px;
452 display: flex;
453 align-items: center;
454 justify-content: center;
455 text-shadow: 0 2px 15px rgba(0, 0, 0, 0.4),
456 0 0 20px rgba(255, 165, 0, 0.2);
457 letter-spacing: 1px;
458 }
459
460 .quote-icon-left {
461 position: absolute;
462 top: 0px;
463 left: 0px;
464 opacity: 0.25;
465 transform: rotate(180deg);
466 filter: drop-shadow(0 0 10px rgba(255, 165, 0, 0.4));
467 }
468
469 .quote-icon-right {
470 position: absolute;
471 bottom: 0px;
472 right: 0px;
473 opacity: 0.25;
474 filter: drop-shadow(0 0 10px rgba(255, 165, 0, 0.4));
475 }
476
477 /* Accent tech bars */
478 .accent-bar-left, .accent-bar-right {
479 position: absolute;
480 width: 6px;
481 height: 180px;
482 top: 50%;
483 transform: translateY(-50%);
484 border-radius: 10px;
485 }
486
487 .accent-bar-left {
488 left: 15px;
489 background: linear-gradient(180deg, rgba(255, 140, 0, 0.8), rgba(255, 140, 0, 0.2));
490 box-shadow: 0 0 25px rgba(255, 140, 0, 0.6);
491 }
492
493 .accent-bar-right {
494 right: 15px;
495 background: linear-gradient(180deg, rgba(255, 215, 0, 0.8), rgba(255, 215, 0, 0.2));
496 box-shadow: 0 0 25px rgba(255, 215, 0, 0.6);
497 }
498
499 /* Footer with tech design */
500 .footer {
501 display: flex;
502 align-items: center;
503 justify-content: space-between;
504 padding: 25px 5px;
505 border-top: 3px solid rgba(255, 165, 0, 0.5);
506 position: relative;
507 }
508
509 .footer::before {
510 content: '';
511 position: absolute;
512 top: -5px;
513 left: 0;
514 width: 160px;
515 height: 5px;
516 background: linear-gradient(90deg, rgba(255, 165, 0, 0.9), transparent);
517 box-shadow: 0 0 15px rgba(255, 165, 0, 0.6);
518 }
519
520 .footer::after {
521 content: '';
522 position: absolute;
523 top: -5px;
524 right: 0;
525 width: 100px;
526 height: 5px;
527 background: linear-gradient(90deg, transparent, rgba(255, 215, 0, 0.9));
528 box-shadow: 0 0 15px rgba(255, 215, 0, 0.6);
529 }
530
531 .author {
532 display: flex;
533 flex-direction: column;
534 gap: 8px;
535 }
536
537 .author-name {
538 font-size: 36px;
539 font-weight: bold;
540 color: #FFD700;
541 display: flex;
542 align-items: center;
543 gap: 12px;
544 text-shadow: 0 0 20px rgba(255, 215, 0, 0.5);
545 }
546
547 .author-badges {
548 display: flex;
549 gap: 8px;
550 align-items: center;
551 }
552
553 .author-badge {
554 width: 12px;
555 height: 12px;
556 border-radius: 50%;
557 box-shadow: 0 0 18px currentColor;
558 }
559
560 .author-badge.cyan {
561 background: #FF8C00;
562 color: #FF8C00;
563 }
564
565 .author-badge.pink {
566 background: #FFD700;
567 color: #FFD700;
568 }
569
570 .author-desc {
571 font-size: 26px;
572 color: rgba(255, 248, 220, 0.9);
573 line-height: 1.3;
574 text-shadow: 0 1px 8px rgba(0, 0, 0, 0.3);
575 }
576
577 .logo-wrapper {
578 display: flex;
579 flex-direction: column;
580 align-items: flex-end;
581 gap: 8px;
582 }
583
584 .logo {
585 font-size: 28px;
586 font-weight: bold;
587 color: #FFD700;
588 letter-spacing: 2px;
589 position: relative;
590 text-shadow: 0 0 20px rgba(255, 215, 0, 0.5);
591 }
592
593 .logo::before {
594 content: '';
595 position: absolute;
596 left: -22px;
597 top: 50%;
598 transform: translateY(-50%);
599 width: 12px;
600 height: 12px;
601 background: #FFA500;
602 border-radius: 50%;
603 box-shadow: 0 0 18px #FFA500;
604 }
605
606 .logo-dots {
607 display: flex;
608 gap: 5px;
609 }
610
611 .logo-dot {
612 width: 7px;
613 height: 7px;
614 border-radius: 50%;
615 background: rgba(255, 165, 0, 0.6);
616 box-shadow: 0 0 10px rgba(255, 165, 0, 0.5);
617 }
618
619 </style>
620 </head>
621 <body>
622 <!-- Background decorations -->
623 <div class="bg-decoration">
624 <div class="dot-pattern"></div>
625 <div class="circle-1"></div>
626 <div class="circle-2"></div>
627 <div class="circle-3"></div>
628 <div class="triangle"></div>
629 <div class="square-1"></div>
630 <div class="square-2"></div>
631 <div class="line-1"></div>
632 <div class="line-2"></div>
633 <div class="line-3"></div>
634 <div class="hexagon-1"></div>
635 <div class="hexagon-2"></div>
636 </div>
637
638 <div class="page-container">
639 <div class="topic-wrapper">
640 <div class="topic-accent"></div>
641 <div class="topic-decoration">
642 <div class="topic-dot"></div>
643 <div class="topic-dot"></div>
644 <div class="topic-dot"></div>
645 </div>
646
647 <!-- Tech badge decoration -->
648 <svg class="bookmark-deco" width="60" height="60" viewBox="0 0 24 24" fill="none" stroke="rgba(255, 165, 0, 0.6)" stroke-width="2">
649 <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>
650 </svg>
651
652 <div class="title">{{title}}</div>
653 </div>
654
655 <div class="image-wrapper">
656 <div class="corner-deco top-left"></div>
657 <div class="corner-deco bottom-right"></div>
658 <div class="corner-deco top-right"></div>
659 <div class="corner-deco bottom-left"></div>
660
661 <!-- Side badges -->
662 <div class="side-badge-left">
663 <div class="badge-circle filled"></div>
664 <div class="badge-circle"></div>
665 <div class="badge-circle"></div>
666 </div>
667 <div class="side-badge-right">
668 <div class="badge-circle"></div>
669 <div class="badge-circle filled"></div>
670 <div class="badge-circle"></div>
671 </div>
672
673 <div class="image-container">
674 <img src="{{image}}" alt="Frame Image">
675 </div>
676 </div>
677
678 <div class="text-wrapper">
679 <!-- Quote SVG icons -->
680 <svg class="quote-icon-left" width="90" height="90" viewBox="0 0 24 24" fill="rgba(255, 165, 0, 0.6)">
681 <path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
682 </svg>
683 <svg class="quote-icon-right" width="90" height="90" viewBox="0 0 24 24" fill="rgba(255, 165, 0, 0.6)">
684 <path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
685 </svg>
686
687 <!-- Accent bars -->
688 <div class="accent-bar-left"></div>
689 <div class="accent-bar-right"></div>
690
691 <div class="text">{{text}}</div>
692 </div>
693
694 <div class="footer">
695 <div class="author">
696 <div class="author-name">
697 <div class="author-badges">
698 <div class="author-badge cyan"></div>
699 <div class="author-badge pink"></div>
700 </div>
701 {{author=HITsz-TMG}}
702 </div>
703 <div class="author-desc">{{describe=开源视频生成智能体}}</div>
704 </div>
705 <div class="logo-wrapper">
706 <div class="logo">{{brand=Video-Claw}}</div>
707 <div class="logo-dots">
708 <div class="logo-dot"></div>
709 <div class="logo-dot"></div>
710 <div class="logo-dot"></div>
711 <div class="logo-dot"></div>
712 </div>
713 </div>
714 </div>
715 </div>
716 </body>
717 </html>
717 lines HTML