animation2code benchmark
For best compatibility, please view this dashboard in a Chrome browser.
← back to Spinners using Font Icons

model output

Gemini 3 Flash Preview

Spinners using Font Icons

A 0.81T 0.15
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 Spinner Animation</title>
7  <style>
8    /* 
9      Analysis of the animation:
10      - Background: Dark charcoal (#1a1a1a)
11      - Elements: 8 circular white dots arranged in a ring
12      - Sizes: Dots have decreasing diameters to create a "trailing" tail effect
13      - Motion: The entire ring rotates counter-clockwise
14      - Timing: A full rotation takes exactly 2 seconds (based on timestamps 0.0s to 2.0s)
15      - Easing: Linear rotation
16    */
17
18    :root {
19      --bg-color: #1a1a1a;
20      --dot-color: #ffffff;
21      --spinner-size: 50px;
22      --rotation-duration: 2s;
23    }
24
25    * {
26      box-sizing: border-box;
27    }
28
29    body {
30      margin: 0;
31      padding: 0;
32      display: flex;
33      justify-content: center;
34      align-items: center;
35      height: 100vh;
36      background-color: var(--bg-color);
37      overflow: hidden;
38    }
39
40    /* Container for the spinner, positioned near the top-center as seen in the video */
41    .container {
42      position: relative;
43      width: var(--spinner-size);
44      height: var(--spinner-size);
45      margin-bottom: 30vh; /* Adjusting to match the high vertical alignment in the video */
46    }
47
48    .loader {
49      position: relative;
50      width: 100%;
51      height: 100%;
52      /* The video shows a counter-clockwise rotation */
53      animation: spin var(--rotation-duration) linear infinite;
54    }
55
56    .dot {
57      position: absolute;
58      background-color: var(--dot-color);
59      border-radius: 50%;
60      top: 50%;
61      left: 50%;
62      /* Center dots initially so they rotate around the middle */
63      transform-origin: center;
64    }
65
66    /* 
67       Placing 8 dots around the circle. 
68       The first dot is the largest. 
69       The following dots are placed 45 degrees apart and decrease in size/opacity.
70    */
71    .dot:nth-child(1) { 
72      width: 10px; height: 10px; 
73      transform: translate(-50%, -50%) rotate(0deg) translateY(-22px); 
74    }
75    .dot:nth-child(2) { 
76      width: 8.5px; height: 8.5px; opacity: 0.9;
77      transform: translate(-50%, -50%) rotate(45deg) translateY(-22px); 
78    }
79    .dot:nth-child(3) { 
80      width: 7.2px; height: 7.2px; opacity: 0.8;
81      transform: translate(-50%, -50%) rotate(90deg) translateY(-22px); 
82    }
83    .dot:nth-child(4) { 
84      width: 6px; height: 6px; opacity: 0.7;
85      transform: translate(-50%, -50%) rotate(135deg) translateY(-22px); 
86    }
87    .dot:nth-child(5) { 
88      width: 5px; height: 5px; opacity: 0.6;
89      transform: translate(-50%, -50%) rotate(180deg) translateY(-22px); 
90    }
91    .dot:nth-child(6) { 
92      width: 4.2px; height: 4.2px; opacity: 0.5;
93      transform: translate(-50%, -50%) rotate(225deg) translateY(-22px); 
94    }
95    .dot:nth-child(7) { 
96      width: 3.5px; height: 3.5px; opacity: 0.4;
97      transform: translate(-50%, -50%) rotate(270deg) translateY(-22px); 
98    }
99    .dot:nth-child(8) { 
100      width: 3px; height: 3px; opacity: 0.3;
101      transform: translate(-50%, -50%) rotate(315deg) translateY(-22px); 
102    }
103
104    @keyframes spin {
105      from {
106        transform: rotate(0deg);
107      }
108      to {
109        /* Rotating negative degrees for counter-clockwise movement */
110        transform: rotate(-360deg);
111      }
112    }
113  </style>
114</head>
115<body>
116
117  <div class="container">
118    <div class="loader">
119      <div class="dot"></div>
120      <div class="dot"></div>
121      <div class="dot"></div>
122      <div class="dot"></div>
123      <div class="dot"></div>
124      <div class="dot"></div>
125      <div class="dot"></div>
126      <div class="dot"></div>
127    </div>
128  </div>
129
130</body>
131</html>