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.77T 0.17
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>Loading Animation Recreation</title>
7    <style>
8        /* Global Styles */
9        body {
10            margin: 0;
11            padding: 0;
12            display: flex;
13            justify-content: center;
14            align-items: center;
15            min-height: 100vh;
16            background-color: #eeeeee; /* Light gray background matching the video */
17            overflow: hidden;
18        }
19
20        /* Container for the loader dots */
21        .loader {
22            display: flex;
23            gap: 2px; /* Small spacing between squares */
24            /* Positioning slightly towards the top as seen in the video frames */
25            transform: translateY(-40vh); 
26        }
27
28        /* Individual square styling */
29        .dot {
30            width: 4px;
31            height: 4px;
32            background-color: #333333; /* Dark gray color of the active dots */
33            opacity: 0.15; /* Base opacity for "inactive" dots */
34            animation: pulse 1.2s infinite ease-in-out;
35        }
36
37        /* Staggered animation delays to create the "wave" or "scanner" effect */
38        .dot:nth-child(1) { animation-delay: 0.0s; }
39        .dot:nth-child(2) { animation-delay: 0.1s; }
40        .dot:nth-child(3) { animation-delay: 0.2s; }
41        .dot:nth-child(4) { animation-delay: 0.3s; }
42        .dot:nth-child(5) { animation-delay: 0.4s; }
43        .dot:nth-child(6) { animation-delay: 0.5s; }
44        .dot:nth-child(7) { animation-delay: 0.6s; }
45        .dot:nth-child(8) { animation-delay: 0.7s; }
46
47        /* Animation Keyframes
48           Creates a "moving block" effect by keeping opacity high for a portion 
49           of the cycle and slightly scaling the square.
50        */
51        @keyframes pulse {
52            0%, 100% {
53                opacity: 0.15;
54                transform: scale(0.9);
55            }
56            30%, 60% {
57                opacity: 1;
58                transform: scale(1.1);
59            }
60        }
61    </style>
62</head>
63<body>
64
65    <!-- 8 dots as identified in the animation sequence -->
66    <div class="loader">
67        <div class="dot"></div>
68        <div class="dot"></div>
69        <div class="dot"></div>
70        <div class="dot"></div>
71        <div class="dot"></div>
72        <div class="dot"></div>
73        <div class="dot"></div>
74        <div class="dot"></div>
75    </div>
76
77</body>
78</html>