返回 VideoClaw
image_modern.html
根目录 / video-claw / video-claw / backend / templates / 1080x1920 / image_modern.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: {{accent_color:color=#764ba2}};
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 shapes */
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 /* Dot pattern background */
48 .dot-pattern {
49 position: absolute;
50 top: 0;
51 left: 0;
52 width: 100%;
53 height: 100%;
54 background-image:
55 radial-gradient(circle, rgba(255, 255, 255, 0.08) 2px, transparent 2px);
56 background-size: 60px 60px;
57 opacity: 0.4;
58 }
59
60 .circle-1 {
61 position: absolute;
62 width: 450px;
63 height: 450px;
64 border-radius: 50%;
65 background: rgba(255, 255, 255, 0.06);
66 top: -180px;
67 right: -120px;
68 border: 3px solid rgba(255, 255, 255, 0.1);
69 }
70
71 .circle-2 {
72 position: absolute;
73 width: 350px;
74 height: 350px;
75 border-radius: 50%;
76 background: rgba(106, 17, 203, 0.2);
77 bottom: 80px;
78 left: -100px;
79 }
80
81 .circle-3 {
82 position: absolute;
83 width: 200px;
84 height: 200px;
85 border-radius: 50%;
86 border: 4px solid rgba(78, 205, 196, 0.25);
87 background: transparent;
88 top: 40%;
89 left: 50px;
90 }
91
92 .triangle {
93 position: absolute;
94 width: 0;
95 height: 0;
96 border-left: 180px solid transparent;
97 border-right: 180px solid transparent;
98 border-bottom: 310px solid rgba(255, 255, 255, 0.04);
99 top: 45%;
100 right: -80px;
101 transform: rotate(30deg);
102 }
103
104 .square-1 {
105 position: absolute;
106 width: 120px;
107 height: 120px;
108 background: rgba(255, 107, 157, 0.08);
109 top: 20%;
110 left: -40px;
111 transform: rotate(45deg);
112 }
113
114 .square-2 {
115 position: absolute;
116 width: 80px;
117 height: 80px;
118 border: 3px solid rgba(255, 255, 255, 0.15);
119 background: transparent;
120 bottom: 30%;
121 right: 60px;
122 transform: rotate(15deg);
123 }
124
125 /* Diagonal lines */
126 .line-1, .line-2, .line-3 {
127 position: absolute;
128 height: 2px;
129 background: rgba(255, 255, 255, 0.1);
130 }
131
132 .line-1 {
133 width: 300px;
134 top: 15%;
135 left: 100px;
136 transform: rotate(-15deg);
137 }
138
139 .line-2 {
140 width: 200px;
141 top: 60%;
142 right: 150px;
143 transform: rotate(25deg);
144 }
145
146 .line-3 {
147 width: 250px;
148 bottom: 15%;
149 left: 150px;
150 transform: rotate(-10deg);
151 }
152
153 /* Header with icon decoration */
154 .video-title-wrapper {
155 position: relative;
156 text-align: center;
157 }
158
159 .video-title-decoration {
160 position: absolute;
161 top: -30px;
162 left: 50%;
163 transform: translateX(-50%);
164 display: flex;
165 gap: 8px;
166 }
167
168 .video-title-dot {
169 width: 10px;
170 height: 10px;
171 border-radius: 50%;
172 }
173
174 .video-title-dot:nth-child(1) { background: #FF6B9D; }
175 .video-title-dot:nth-child(2) { background: #4ECDC4; }
176 .video-title-dot:nth-child(3) { background: #FFE66D; }
177
178 .video-title {
179 font-size: {{title_font_size:number=72}}px;
180 font-weight: bold;
181 color: white;
182 line-height: 1.3;
183 text-shadow: 0 2px 8px rgba(0,0,0,0.2);
184 padding: 20px 0;
185 position: relative;
186 display: inline-block;
187 }
188
189 .video-title::before,
190 .video-title::after {
191 content: '';
192 position: absolute;
193 width: 70px;
194 height: 5px;
195 background: rgba(255, 255, 255, 0.4);
196 top: 50%;
197 }
198
199 .video-title::before {
200 left: -90px;
201 }
202
203 .video-title::after {
204 right: -90px;
205 }
206
207 /* Bookmark decoration */
208 .bookmark-deco {
209 position: absolute;
210 top: 0;
211 right: 80px;
212 }
213
214 /* Image container with corner decorations */
215 .image-wrapper {
216 position: relative;
217 }
218
219 .image-container {
220 width: 100%;
221 height: 900px;
222 display: flex;
223 align-items: center;
224 justify-content: center;
225 position: relative;
226 }
227
228 .image-container img {
229 width: 100%;
230 height: 100%;
231 border-radius: 15px;
232 object-fit: cover;
233 }
234
235 /* Corner decorations for image */
236 .corner-deco {
237 position: absolute;
238 width: 60px;
239 height: 60px;
240 border: 4px solid rgba(255, 255, 255, 0.6);
241 z-index: 2;
242 }
243
244 .corner-deco.top-left {
245 top: -15px;
246 left: -15px;
247 border-right: none;
248 border-bottom: none;
249 border-radius: 15px 0 0 0;
250 }
251
252 .corner-deco.bottom-right {
253 bottom: -15px;
254 right: -15px;
255 border-left: none;
256 border-top: none;
257 border-radius: 0 0 15px 0;
258 }
259
260 .corner-deco.top-right {
261 top: -15px;
262 right: -15px;
263 border-left: none;
264 border-bottom: none;
265 border-radius: 0 15px 0 0;
266 width: 30px;
267 height: 30px;
268 border-color: rgba(78, 205, 196, 0.6);
269 }
270
271 .corner-deco.bottom-left {
272 bottom: -15px;
273 left: -15px;
274 border-right: none;
275 border-top: none;
276 border-radius: 0 0 0 15px;
277 width: 30px;
278 height: 30px;
279 border-color: rgba(255, 107, 157, 0.6);
280 }
281
282 /* Side badges */
283 .side-badge-left, .side-badge-right {
284 position: absolute;
285 display: flex;
286 flex-direction: column;
287 gap: 12px;
288 }
289
290 .side-badge-left {
291 left: -25px;
292 top: 50%;
293 transform: translateY(-50%);
294 }
295
296 .side-badge-right {
297 right: -25px;
298 top: 50%;
299 transform: translateY(-50%);
300 }
301
302 .badge-circle {
303 width: 16px;
304 height: 16px;
305 border-radius: 50%;
306 border: 3px solid rgba(255, 255, 255, 0.4);
307 background: transparent;
308 }
309
310 .badge-circle.filled {
311 background: rgba(255, 255, 255, 0.5);
312 }
313
314 /* Quote icon using SVG */
315 .text-wrapper {
316 position: relative;
317 }
318
319 .text {
320 font-size: 44px;
321 color: white;
322 text-align: center;
323 line-height: 1.8;
324 padding: 30px 60px;
325 position: relative;
326 height: 237.6px;
327 display: flex;
328 align-items: center;
329 justify-content: center;
330 }
331
332 .quote-icon-left {
333 position: absolute;
334 top: 0px;
335 left: 0px;
336 opacity: 0.25;
337 transform: rotate(180deg);
338 }
339
340 .quote-icon-right {
341 position: absolute;
342 bottom: 0px;
343 right: 0px;
344 opacity: 0.25;
345 }
346
347 /* Accent bars beside text */
348 .accent-bar-left, .accent-bar-right {
349 position: absolute;
350 width: 6px;
351 height: 150px;
352 top: 50%;
353 transform: translateY(-50%);
354 }
355
356 .accent-bar-left {
357 left: 20px;
358 background: rgba(78, 205, 196, 0.5);
359 }
360
361 .accent-bar-right {
362 right: 20px;
363 background: rgba(255, 107, 157, 0.5);
364 }
365
366 /* Footer with icon */
367 .footer {
368 display: flex;
369 align-items: center;
370 justify-content: space-between;
371 padding: 20px 5px;
372 border-top: 2px solid rgba(255, 255, 255, 0.3);
373 position: relative;
374 }
375
376 .footer::before {
377 content: '';
378 position: absolute;
379 top: -4px;
380 left: 0;
381 width: 120px;
382 height: 4px;
383 background: rgba(255, 255, 255, 0.7);
384 }
385
386 .footer::after {
387 content: '';
388 position: absolute;
389 top: -4px;
390 right: 0;
391 width: 60px;
392 height: 4px;
393 background: rgba(78, 205, 196, 0.6);
394 }
395
396 .author {
397 display: flex;
398 flex-direction: column;
399 gap: 6px;
400 }
401
402 .author-name {
403 font-size: 34px;
404 font-weight: bold;
405 color: white;
406 display: flex;
407 align-items: center;
408 gap: 12px;
409 }
410
411 .author-badges {
412 display: flex;
413 gap: 6px;
414 align-items: center;
415 }
416
417 .author-badge {
418 width: 10px;
419 height: 10px;
420 border-radius: 50%;
421 box-shadow: 0 0 10px currentColor;
422 }
423
424 .author-badge.cyan {
425 background: #4ECDC4;
426 color: #4ECDC4;
427 }
428
429 .author-badge.pink {
430 background: #FF6B9D;
431 color: #FF6B9D;
432 }
433
434 .author-desc {
435 font-size: 24px;
436 color: rgba(255, 255, 255, 0.85);
437 line-height: 1.3;
438 }
439
440 .logo-wrapper {
441 display: flex;
442 flex-direction: column;
443 align-items: flex-end;
444 gap: 5px;
445 }
446
447 .logo {
448 font-size: 26px;
449 font-weight: bold;
450 color: rgba(255, 255, 255, 0.7);
451 letter-spacing: 1px;
452 position: relative;
453 }
454
455 .logo::before {
456 content: '';
457 position: absolute;
458 left: -18px;
459 top: 50%;
460 transform: translateY(-50%);
461 width: 10px;
462 height: 10px;
463 background: #FFE66D;
464 border-radius: 50%;
465 }
466
467 .logo-dots {
468 display: flex;
469 gap: 4px;
470 }
471
472 .logo-dot {
473 width: 6px;
474 height: 6px;
475 border-radius: 50%;
476 background: rgba(255, 255, 255, 0.4);
477 }
478
479 </style>
480 </head>
481 <body>
482 <!-- Background decorations -->
483 <div class="bg-decoration">
484 <div class="dot-pattern"></div>
485 <div class="circle-1"></div>
486 <div class="circle-2"></div>
487 <div class="circle-3"></div>
488 <div class="triangle"></div>
489 <div class="square-1"></div>
490 <div class="square-2"></div>
491 <div class="line-1"></div>
492 <div class="line-2"></div>
493 <div class="line-3"></div>
494 </div>
495
496 <div class="page-container">
497 <div class="video-title-wrapper">
498 <div class="video-title-decoration">
499 <div class="video-title-dot"></div>
500 <div class="video-title-dot"></div>
501 <div class="video-title-dot"></div>
502 </div>
503
504 <!-- Bookmark decoration -->
505 <svg class="bookmark-deco" width="50" height="70" viewBox="0 0 24 32" fill="rgba(255, 230, 109, 0.6)">
506 <path d="M2 0h20v32l-10-6-10 6V0z"/>
507 </svg>
508
509 <div class="video-title">{{title}}</div>
510 </div>
511
512 <div class="image-wrapper">
513 <div class="corner-deco top-left"></div>
514 <div class="corner-deco bottom-right"></div>
515 <div class="corner-deco top-right"></div>
516 <div class="corner-deco bottom-left"></div>
517
518 <!-- Side badges -->
519 <div class="side-badge-left">
520 <div class="badge-circle filled"></div>
521 <div class="badge-circle"></div>
522 <div class="badge-circle"></div>
523 </div>
524 <div class="side-badge-right">
525 <div class="badge-circle"></div>
526 <div class="badge-circle filled"></div>
527 <div class="badge-circle"></div>
528 </div>
529
530 <div class="image-container">
531 <img src="{{image}}" alt="Frame Image">
532 </div>
533 </div>
534
535 <div class="text-wrapper">
536 <!-- Quote SVG icons -->
537 <svg class="quote-icon-left" width="90" height="90" viewBox="0 0 24 24" fill="white">
538 <path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
539 </svg>
540 <svg class="quote-icon-right" width="90" height="90" viewBox="0 0 24 24" fill="white">
541 <path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/>
542 </svg>
543
544 <!-- Accent bars -->
545 <div class="accent-bar-left"></div>
546 <div class="accent-bar-right"></div>
547
548 <div class="text">{{text}}</div>
549 </div>
550
551 <div class="footer">
552 <div class="author">
553 <div class="author-name">
554 <div class="author-badges">
555 <div class="author-badge cyan"></div>
556 <div class="author-badge pink"></div>
557 </div>
558 <div class="logo">{{author=HITsz-TMG}}</div>
559 </div>
560 <div class="author-desc">{{describe=开源视频生成智能体}}</div>
561 </div>
562 <div class="logo-wrapper">
563 <div class="logo">{{brand=Video-Claw}}</div>
564 <div class="logo-dots">
565 <div class="logo-dot"></div>
566 <div class="logo-dot"></div>
567 <div class="logo-dot"></div>
568 <div class="logo-dot"></div>
569 </div>
570 </div>
571 </div>
572 </div>
573 </body>
574 </html>
575
575 lines HTML