animation2code benchmark
For best compatibility, please view this dashboard in a Chrome browser.
← back to Motion Table - Orbit

model output

Qwen3-VL-8B-Instruct

Motion Table - Orbit

A 0.64T 0.27
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>Target Animation</title>
7<style>
8  body {
9    background-color: #333;
10    display: flex;
11    justify-content: center;
12    align-items: center;
13    height: 100vh;
14    margin: 0;
15  }
16
17  .target {
18    position: relative;
19    width: 100px;
20    height: 100px;
21  }
22
23  .crosshair {
24    position: absolute;
25    top: 50%;
26    left: 50%;
27    transform: translate(-50%, -50%);
28    width: 2px;
29    height: 100px;
30    background-color: white;
31  }
32
33  .crosshair::before {
34    content: '';
35    position: absolute;
36    top: 50%;
37    left: 0;
38    transform: translateX(-50%);
39    width: 100px;
40    height: 2px;
41    background-color: white;
42  }
43
44  .circle {
45    position: absolute;
46    top: 50%;
47    left: 50%;
48    transform: translate(-50%, -50%);
49    width: 100px;
50    height: 100px;
51    border: 2px solid white;
52    border-radius: 50%;
53    animation: pulse 1.5s ease-in-out infinite alternate;
54  }
55
56  .arrow {
57    position: absolute;
58    width: 0;
59    height: 0;
60    border-left: 10px solid transparent;
61    border-right: 10px solid transparent;
62    border-top: 15px solid red;
63    top: 50%;
64    left: 50%;
65    transform: translate(-50%, -50%);
66    animation: rotate 1.5s ease-in-out infinite alternate;
67  }
68
69  .arrow:nth-child(1) {
70    transform: translate(-50%, -50%) rotate(0deg);
71  }
72
73  .arrow:nth-child(2) {
74    transform: translate(-50%, -50%) rotate(90deg);
75  }
76
77  .arrow:nth-child(3) {
78    transform: translate(-50%, -50%) rotate(180deg);
79  }
80
81  .arrow:nth-child(4) {
82    transform: translate(-50%, -50%) rotate(270deg);
83  }
84
85  @keyframes pulse {
86    0% {
87      transform: translate(-50%, -50%) scale(1);
88    }
89    100% {
90      transform: translate(-50%, -50%) scale(1.1);
91    }
92  }
93
94  @keyframes rotate {
95    0% {
96      transform: translate(-50%, -50%) rotate(0deg);
97    }
98    100% {
99      transform: translate(-50%, -50%) rotate(360deg);
100    }
101  }
102</style>
103</head>
104<body>
105  <div class="target">
106    <div class="circle"></div>
107    <div class="crosshair"></div>
108    <div class="arrow"></div>
109    <div class="arrow"></div>
110    <div class="arrow"></div>
111    <div class="arrow"></div>
112  </div>
113
114  <script>
115    // Add animation for arrows
116    const arrows = document.querySelectorAll('.arrow');
117    arrows.forEach((arrow, index) => {
118      arrow.style.animationDelay = `${index * 0.25}s`;
119    });
120
121    // Add animation for circle
122    const circle = document.querySelector('.circle');
123    circle.style.animationDuration = '1.5s';
124    circle.style.animationTimingFunction = 'ease-in-out';
125  </script>
126</body>
127</html>