
The send button
Buttons, Transitions, SVG
NewFree
A week of weather in the mountains: choosing a day, the sky of the big icon rearranges itself (the sun slides behind the clouds, the clouds darken, the rain or the snow starts, the lightning flashes), the temperature rolls up when the day is warmer and down when it is colder, the card takes the colours of the sky and the curve of the temperatures moves like a wave.
A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN. The React and Vue tabs hold the same demo as a ready component, which switches its animations off when it leaves the page.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The week's weather</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/quicksand@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the week's weather: choosing a day, the sky of the big icon rearranges itself (the sun slides behind the
clouds, the rain starts), the temperature rolls up or down, the card takes the colour of the sky and the
curve of the day's temperatures moves into its new shape -->
<section class="weather" aria-labelledby="weather-place" data-weather data-autoclic>
<header class="weather__head">
<h2 class="weather__place" id="weather-place" data-place></h2>
<p class="weather__when"><span class="roll" data-day></span></p>
</header>
<div class="now">
<div class="now__icon" data-icon></div>
<div class="now__main">
<p class="now__temp"><span class="roll" data-temp></span><span class="now__deg">°</span></p>
<p class="now__sky"><span class="roll" data-sky></span></p>
</div>
<dl class="now__stats">
<div><dt data-wet-name>Rain</dt><dd data-wet></dd></div>
<div><dt>Wind</dt><dd data-wind></dd></div>
</dl>
</div>
<div class="chart" tabindex="0" role="slider" aria-label="Temperature through the day" data-chart>
<svg class="chart__svg" aria-hidden="true" data-chart-svg>
<defs>
<linearGradient id="chart-area" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" style="stop-color: var(--line); stop-opacity: 0.34"/>
<stop offset="1" style="stop-color: var(--line); stop-opacity: 0"/>
</linearGradient>
</defs>
<path class="chart__area" fill="url(#chart-area)" data-area/>
<line class="chart__guide" data-guide/>
<path class="chart__line" data-line/>
</svg>
<span class="chart__tip" aria-hidden="true" data-tip></span>
<div class="chart__hours" aria-hidden="true" data-hours></div>
</div>
<div class="days" role="radiogroup" aria-label="Day" data-days>
<span class="days__pill" aria-hidden="true" data-pill></span>
</div>
<p class="sr" aria-live="polite" data-live></p>
</section>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="script.js"></script>
</body>
</html>Change values, colours and text with the controls and watch the animation respond live. Or write in the code yourself. Then download the folder with your changes.
118 values to change
With the Animorio connector, Claude Code takes it from here, guide included, and fits it into your project. Paste this request:
Take “The week's weather” from Animorio and fit it into my siteEvery icon, big or small, is the same SVG: a sun with its rays, a cloud behind, a cloud in front with its shadow, a bolt, the rain and the snow. Each piece sits in a group put in its place once and moves inside it: for each sky a table says where every piece stands (x, y, scale, opacity) and what colour the clouds are, and GSAP takes them there in CHANGE seconds.
In the big icon each drop falls in a loop of its own, started at a random point (progress with Math.random()), so they never fall all together; the flakes come down more slowly, swaying and turning. The lightning is a repeating timeline: two quick flashes and a pause.
The day, the sky and the temperature are words that roll: the old one leaves the way of the change, the text changes and the new one comes in from the other side with back.out. The temperature rises when the day is warmer and falls when it is colder; rain and wind count with a tween on a number.
The curve goes through eight temperatures, one every two hours, joined by Bézier curves worked out with the Catmull-Rom method; the scale is the whole week's, so a cold day sits lower. Changing day each point goes to the new temperature a moment after the one before, and a timeline redraws the line and the area every frame.
The pointer or the finger on the curve takes the nearest hour: a thin line comes down from the curve and the label follows it with quickTo. With the keys the curve is a slider (arrows, Home and End) and the days are a group of choices. The card's colour lives in three CSS variables that GSAP takes to the colours of the new sky. A click from a script (the library's preview) goes to the next day and every third time runs a pretend pointer along the curve.
| Name | File | Default | What it changes |
|---|---|---|---|
PLACE | script.js | 'Madonna di Campiglio' | The place. |
DAYS | script.js | [['Friday', 'sunny', [2, 5, 9, 12, 14, 13, 10, 6], 0, 8], …] | The week: the day, its sky (sunny, partly, cloudy, rain, storm, snow), the temperature every two hours from 6 am, the chance of rain or snow and the wind. |
CHANGE | script.js | 0.8 | The seconds the sky, the colours and the curve take to change. |
SUN_TURN | script.js | 40 | The seconds the sun's rays take to go round once. |
DROPS | script.js | 8 | How many drops of rain, or flakes of snow, fall from the big icon. |
SKIES | script.js | { sunny: ['Sunny', '#fff6df', '#ffe4ad', '#f2a516'], … } | The skies: the name, the card's colours at the top and at the bottom, the colour of the curve. |
For the site of a mountain hut, a hotel or a farm stay, a resort's app, an outdoor events page, a dashboard, any card that changes state with a drawn icon.
The card is at most 400 pixels wide and fits whole; a finger resting on the curve shows the hour and follows it sideways, and a moment after it lifts the hour goes. Vertically the page scrolls as usual (touch-action pan-y).
Everything changes at once: the pieces of the icon, the colours, the curve and the figures; the rays do not turn, the drops and the flakes stay still, the lightning stays lit without flashing, no hop and no entrance.
GSAP 3.15.0, Quicksand (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 9.1 KB; the libraries: GSAP 28 KB.
Tested on 3 October 2026
Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.
With your account’s email and password.
or with your email
You’re signed in as .
With your account, you can download the zip of every animation and every pack, for free.