animation2code benchmark
For best compatibility, please view this dashboard in a Chrome browser.
← back to Wavy Loading Animations

model output

Gemini 3 Flash Preview

Wavy Loading Animations

A 0.75T 0.21
compare with ground truth →
1<!DOCTYPE html>
2<html lang="en">
3<head>
4    <meta charset="UTF-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6    <title>Pulsing Concentric Circles Animation</title>
7    <style>
8        /* 
9           Analysis of Animation:
10           - Background: Light gray (#eeeeee)
11           - Element: 4 concentric circles, thin dark gray lines.
12           - Position: Horizontally centered, placed in the top third of the viewport.
13           - Animation: Pulsing scale and opacity.
14           - Timing: Approx 1 second per cycle (Peak at 1s, 2s, 3s; Trough at 1.5s, 2.5s).
15           - Easing: Smooth ease-in-out.
16        */
17
18        body {
19            margin: 0;
20            padding: 0;
21            background-color: #eeeeee;
22            display: flex;
23            justify-content: center;
24            height: 100vh;
25            overflow: hidden;
26        }
27
28        /* Container positioned near the top as seen in the video */
29        .animation-wrapper {
30            margin-top: 15vh;
31            position: relative;
32            display: flex;
33            justify-content: center;
34            align-items: center;
35            width: 100px;
36            height: 100px;
37        }
38
39        /* The group of circles pulses together */
40        .circles-group {
41            position: relative;
42            display: flex;
43            justify-content: center;
44            align-items: center;
45            animation: pulse-animation 1s ease-in-out infinite;
46        }
47
48        .circle {
49            position: absolute;
50            border-radius: 50%;
51            border: 1px solid rgba(0, 0, 0, 0.2);
52            box-sizing: border-box;
53        }
54
55        /* Concentric circle sizes */
56        .circle:nth-child(1) {
57            width: 12px;
58            height: 12px;
59        }
60        .circle:nth-child(2) {
61            width: 24px;
62            height: 24px;
63        }
64        .circle:nth-child(3) {
65            width: 36px;
66            height: 36px;
67        }
68        .circle:nth-child(4) {
69            width: 48px;
70            height: 48px;
71        }
72
73        /* 
74           Animation Keyframes:
75           0% and 100% represent the trough (smallest state)
76           50% represents the peak (largest state)
77        */
78        @keyframes pulse-animation {
79            0%, 100% {
80                transform: scale(0.3);
81                opacity: 0.1;
82            }
83            50% {
84                transform: scale(1.3);
85                opacity: 0.5;
86            }
87        }
88
89        /* Initial fade-in to match video start (00:00.000 to 00:01.000) */
90        .animation-wrapper {
91            animation: initial-fade 1s ease-out forwards;
92        }
93
94        @keyframes initial-fade {
95            from { opacity: 0; }
96            to { opacity: 1; }
97        }
98    </style>
99</head>
100<body>
101
102    <div class="animation-wrapper">
103        <div class="circles-group">
104            <div class="circle"></div>
105            <div class="circle"></div>
106            <div class="circle"></div>
107            <div class="circle"></div>
108        </div>
109    </div>
110
111</body>
112</html>