← back to CSS3 loading animationscompare with ground truth →
model output
Gemini 3 Flash Preview
CSS3 loading animations
A 0.80T 0.31
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>Opera GX Style Loader</title>
7 <style>
8 /*
9 Analysis:
10 - Background: Very dark, almost black (#0d0d0d).
11 - Primary Color: Vibrant Red (#ff0000).
12 - Shape: A broken ring (stylized 'O') with a central dot.
13 - Animation: Constant clockwise rotation of the outer ring.
14 - Effects: Soft red glow (bloom effect) on both the ring and the dot.
15 */
16
17 body, html {
18 margin: 0;
19 padding: 0;
20 width: 100%;
21 height: 100%;
22 display: flex;
23 justify-content: center;
24 align-items: center;
25 background-color: #0d0d0d;
26 overflow: hidden;
27 }
28
29 .container {
30 position: relative;
31 width: 100px;
32 height: 100px;
33 display: flex;
34 justify-content: center;
35 align-items: center;
36 }
37
38 /* The rotating outer ring */
39 .ring {
40 position: absolute;
41 width: 44px;
42 height: 44px;
43 border-radius: 50%;
44 border: 4.5px solid #ff0000;
45 /* Create the gap in the ring */
46 border-top-color: transparent;
47 /* Glow effect */
48 box-shadow: 0 0 15px rgba(255, 0, 0, 0.4),
49 inset 0 0 10px rgba(255, 0, 0, 0.2);
50 filter: drop-shadow(0 0 2px #ff0000);
51
52 /* Animation: 1 full rotation every 0.8 seconds */
53 animation: rotate 0.8s linear infinite;
54 }
55
56 /* The central static dot */
57 .dot {
58 position: absolute;
59 width: 10px;
60 height: 10px;
61 background-color: #ff0000;
62 border-radius: 50%;
63 box-shadow: 0 0 12px #ff0000, 0 0 20px rgba(255, 0, 0, 0.5);
64 /* Subtle pulse to match the video's dynamic glow */
65 animation: pulse 1.5s ease-in-out infinite;
66 }
67
68 /* Rotation Keyframes */
69 @keyframes rotate {
70 0% {
71 transform: rotate(0deg);
72 }
73 100% {
74 transform: rotate(360deg);
75 }
76 }
77
78 /* Subtle pulse for the dot to simulate light flicker */
79 @keyframes pulse {
80 0%, 100% {
81 transform: scale(1);
82 opacity: 0.9;
83 }
84 50% {
85 transform: scale(1.1);
86 opacity: 1;
87 }
88 }
89
90 /* Container positioning to match the video (slightly towards top) */
91 .wrapper {
92 transform: translateY(-150px);
93 }
94 </style>
95</head>
96<body>
97
98 <div class="wrapper">
99 <div class="container">
100 <div class="ring"></div>
101 <div class="dot"></div>
102 </div>
103 </div>
104
105</body>
106</html>