← back to CSS3 loading animationscompare with ground truth →
model output
Gemini 3 Flash Preview
CSS3 loading animations
A 0.76T 0.27
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>Square Pulse Loader</title>
7 <style>
8 /* Base styles to match the video background and layout */
9 body, html {
10 margin: 0;
11 padding: 0;
12 width: 100%;
13 height: 100%;
14 display: flex;
15 justify-content: center;
16 align-items: flex-start; /* Positioned at the top like in the video */
17 background-color: #121212;
18 overflow: hidden;
19 }
20
21 /* Container for the loader */
22 .loader-container {
23 margin-top: 20px; /* Offset from the top */
24 display: flex;
25 gap: 5px; /* Spacing between squares */
26 align-items: center;
27 }
28
29 /* The individual squares */
30 .square {
31 width: 7px;
32 height: 7px;
33 background-color: #a3e635; /* Vibrant lime green from video */
34 border-radius: 1px; /* Very slight rounding */
35 opacity: 0.3;
36 transform: scale(0.9);
37 animation: pulse-wave 1.4s infinite ease-in-out;
38 }
39
40 /* Staggered animation delays to create the wave effect */
41 .square:nth-child(1) {
42 animation-delay: 0s;
43 }
44 .square:nth-child(2) {
45 animation-delay: 0.2s;
46 }
47 .square:nth-child(3) {
48 animation-delay: 0.4s;
49 }
50
51 /*
52 The animation mimics the "breathing" and "expanding" movement.
53 The scaling and opacity changes create the motion-blur look seen
54 in frames like 00:00.500.
55 */
56 @keyframes pulse-wave {
57 0%, 80%, 100% {
58 transform: scale(0.9);
59 opacity: 0.3;
60 }
61 40% {
62 transform: scale(1.6); /* Expansion peak */
63 opacity: 1; /* Brightness peak */
64 }
65 }
66
67 /* High-quality rendering hints */
68 .square {
69 will-change: transform, opacity;
70 -webkit-font-smoothing: antialiased;
71 }
72 </style>
73</head>
74<body>
75
76 <div class="loader-container">
77 <div class="square"></div>
78 <div class="square"></div>
79 <div class="square"></div>
80 </div>
81
82 <script>
83 /**
84 * The animation is handled entirely via CSS for performance
85 * and to match the smooth timing shown in the video frames.
86 */
87 </script>
88</body>
89</html>