← back to CSS Spinnerscompare with ground truth →
model output
Gemini 3 Flash Preview
CSS Spinners
A 0.91T 0.25
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>Drop Animation Recreation</title>
7 <style>
8 /* Reset and layout */
9 body, html {
10 margin: 0;
11 padding: 0;
12 width: 100%;
13 height: 100%;
14 display: flex;
15 flex-direction: column;
16 overflow: hidden;
17 background-color: #ffffff;
18 }
19
20 /* Top blue section */
21 .header {
22 flex: 0 0 33.33%; /* Takes up roughly top 1/3 of the screen */
23 background-color: #9acefa;
24 display: flex;
25 justify-content: center;
26 align-items: center;
27 position: relative;
28 }
29
30 /* Bottom white section */
31 .content {
32 flex: 1;
33 background-color: #ffffff;
34 }
35
36 /* The Teardrop Shape
37 We use a div with specific border radius and border.
38 The 'point' is created by leaving one corner at 0 radius.
39 */
40 .drop-icon {
41 width: 44px;
42 height: 44px;
43 border: 3px solid #3e88e5; /* The darker blue stroke */
44 border-radius: 50% 50% 50% 0;
45 box-sizing: border-box;
46
47 /* Initial rotation to set the base orientation */
48 transform-origin: center center;
49
50 /* Animation properties */
51 animation: swing 3s ease-in-out infinite;
52 }
53
54 /**
55 * Animation Analysis:
56 * The shape oscillates.
57 * It points roughly at 45 degrees (2 o'clock) at the start/end of the cycle
58 * and points straight up (0 degrees) in the middle of the cycle.
59 * Because the base shape (radius 50 50 50 0) points bottom-left at 0deg rotation,
60 * we offset it to match the visual.
61 */
62 @keyframes swing {
63 0% {
64 transform: rotate(45deg);
65 }
66 50% {
67 transform: rotate(-10deg); /* Swings to pointing upwards */
68 }
69 100% {
70 transform: rotate(45deg);
71 }
72 }
73 </style>
74</head>
75<body>
76
77 <!-- Header containing the animated icon -->
78 <div class="header">
79 <div class="drop-icon"></div>
80 </div>
81
82 <!-- Empty white content area as seen in the video -->
83 <div class="content"></div>
84
85 <script>
86 /**
87 * The animation is handled entirely via CSS keyframes for
88 * performance and smoothness, matching the timing observed
89 * in the 1.5s loop sequence (approx 3s for a full back-and-forth swing).
90 */
91 </script>
92</body>
93</html>