
Il pulsante d’invio
Pulsanti, Transizioni, SVG
NuovaGratis
Una barra scura con le pagine e le loro icone: una pillola chiara scivola sotto la pagina scelta, allungandosi per strada, e ogni icona ha il suo piccolo movimento. Projects apre le sue pagine sotto di sé, e il pulsante in cima chiude la barra fino alle sole icone: da lì il nome di una pagina esce accanto all'icona puntata e scivola da un'icona all'altra.
Una cartella che funziona da sola: index.html, style.css, script.js e le librerie da CDN. Nelle schede React e Vue la stessa demo è già un componente, che spegne le sue animazioni quando esce dalla pagina.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The sidebar</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/atkinson-hyperlegible-next@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the sidebar: a light pill slides to the page chosen and every icon has its own little movement; Projects opens
its pages underneath; the button at the top folds the bar down to its icons, and then the names come out
beside the pointer -->
<div class="sb-wrap" data-wrap>
<nav class="sb" aria-label="Main" data-nav data-autoclic>
<button class="sb__toggle" type="button" aria-expanded="true" aria-controls="sb-list" aria-label="Collapse the sidebar" data-toggle>
<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2.5"/><path d="M9.5 4V20"/><path class="i-chev" d="M15.5 9.5L13 12L15.5 14.5"/></svg>
</button>
<div class="sb__body" data-body>
<span class="sb__pill" data-pill aria-hidden="true"></span>
<ul class="sb__list" id="sb-list">
<li><a class="sb__item" href="#" aria-current="page" data-item data-icon="home">
<svg viewBox="0 0 24 24" aria-hidden="true"><path class="i-roof" d="M3.5 10.5L12 3.5L20.5 10.5"/><path d="M5.5 9V20H18.5V9"/><path class="i-door" d="M10 20V14.5H14V20"/></svg>
<span class="sb__label">Home</span></a></li>
<li><a class="sb__item" href="#" data-item data-icon="inbox">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 13.5H8L9.5 16.5H14.5L16 13.5H21V20H3Z"/><g class="i-arrow"><path d="M12 3V11M8.5 7.5L12 11L15.5 7.5"/></g></svg>
<span class="sb__label">Inbox</span></a></li>
<li class="sb__group">
<button class="sb__item sb__item--parent" type="button" aria-expanded="true" aria-controls="sb-projects" data-projects data-icon="projects">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 19V5.5H9L11 7.5H19.5V11"/><path class="i-flap" d="M3 19L5.5 11H22L19.5 19Z"/></svg>
<span class="sb__label">Projects</span>
<svg class="sb__chev" viewBox="0 0 24 24" aria-hidden="true"><path d="M9.5 6.5L15 12L9.5 17.5"/></svg>
</button>
<div class="sb__sub" id="sb-projects" data-sub>
<span class="sb__guide" data-guide aria-hidden="true"></span>
<ul>
<li><a class="sb__item sb__item--child" href="#" data-item><span class="sb__label">Website</span></a></li>
<li><a class="sb__item sb__item--child" href="#" data-item><span class="sb__label">Mobile app</span></a></li>
<li><a class="sb__item sb__item--child" href="#" data-item><span class="sb__label">Brand book</span></a></li>
</ul>
</div>
</li>
<li><a class="sb__item" href="#" data-item data-icon="calendar">
<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="5" width="18" height="16" rx="2.5"/><path d="M8 3V7M16 3V7M3 10H21"/><rect class="i-day" x="13" y="13.5" width="4.5" height="4.5" rx="1"/></svg>
<span class="sb__label">Calendar</span></a></li>
<li><a class="sb__item" href="#" data-item data-icon="reports">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M3 20.5H21"/><path class="i-bar" d="M6.5 18V12.5"/><path class="i-bar" d="M12 18V8"/><path class="i-bar" d="M17.5 18V4.5"/></svg>
<span class="sb__label">Reports</span></a></li>
<li><a class="sb__item" href="#" data-item data-icon="settings">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 6.5H7M11 6.5H20M4 12H13M17 12H20M4 17.5H6M10 17.5H20"/><path class="i-knob" d="M9 4V9"/><path class="i-knob" d="M15 9.5V14.5"/><path class="i-knob" d="M8 15V20"/></svg>
<span class="sb__label">Settings</span></a></li>
</ul>
</div>
</nav>
<!-- the name of an icon, beside it, while the bar is folded -->
<span class="sb__tip" aria-hidden="true" data-tip><span data-tip-text></span></span>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="script.js"></script>
</body>
</html>Cambia valori, colori e testi con le manopole e guarda l’animazione rispondere dal vivo. Oppure scrivi tu nel codice. Poi scarica la cartella con le tue modifiche.
21 valori da cambiare
Col connettore di Animorio, Claude Code la prende da qui con tutta la sua guida e la adatta al tuo progetto. Incolla questa richiesta:
Prendi «La barra laterale» da Animorio e adattala al mio sitoLa pillola è una scatola sotto la lista, di cui lo script mette top e height. I suoi due bordi sono due molle senza rimbalzo che a ogni fotogramma inseguono la riga della pagina scelta (offsetTop sommato risalendo gli offsetParent fino alla lista): il bordo dalla parte in cui la pillola va ha la molla più rigida, il cui tempo è circa SLIDE secondi, l'altro TRAIL volte quella, così la pillola si allunga e si ricompatta.
Quando le righe si spostano (Projects che si apre o si chiude, la barra che si piega) la pillola si sposta con la sua riga della stessa misura e nello stesso fotogramma, e le molle fanno solo il viaggio da una pagina all'altra. Mentre le pagine di Projects sono nascoste, la pillola sta su Projects.
Ogni icona ha una timeline in pausa sulle parti del suo SVG (il tetto e la porta, la freccia, il davanti della cartella, il giorno, le colonne, le tacche dei cursori), che riparte da capo (restart) quando la pagina è scelta o puntata; a riposo ognuna mostra come finisce il suo movimento (progress(1)).
La scatola delle pagine di Projects anima l'altezza fra zero e quella della sua lista (power3.inOut, 0,45 secondi), la freccia gira di 90 gradi, la guida scende (scaleY) e le pagine entrano una dopo l'altra; le pagine nascoste sono inert, fuori dalla strada del Tab. Piegando, i nomi svaniscono spostandosi di 6 pixel uno dopo l'altro, la larghezza passa da 248 a 66 pixel in FOLD secondi e le pagine di Projects si chiudono; aprendo succede il contrario, e alla fine le pagine si riaprono se erano aperte.
A barra piegata, puntare un'icona o arrivarci col Tab mostra il suo nome in un'etichetta accanto: entra da 8 pixel a sinistra con back.out, scivola sull'icona dopo in 0,28 secondi e la sua parola rotola; Escape o l'uscita dalla barra la nascondono, e dopo un tocco resta per 1,2 secondi. Il pulsante in cima ha aria-expanded e la sua etichetta dice Collapse o Expand the sidebar. Un clic da script sulla barra (l'anteprima della libreria) fa il passo dopo di un piccolo giro: Inbox, Website, piega, Calendar col suo nome, apre, chiude Projects, Home, riapre Projects.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
SLIDE | script.js | 0.42 | Più o meno i secondi che il bordo davanti della pillola impiega ad arrivare. |
TRAIL | script.js | 0.55 | Quanto è rigido il bordo dietro rispetto a quello davanti: di meno allunga di più la pillola. |
FOLD | script.js | 0.5 | I secondi che la barra impiega a piegarsi o ad aprirsi. |
Per la barra di un'app o di un pannello di gestione: una posta, un gestionale, un'app di progetti, il pannello di un sito, uno strumento per le prenotazioni, una dashboard.
La barra è larga 248 pixel aperta e 66 piegata, e sta in uno schermo da telefono; le righe sono alte 40 pixel (34 le pagine di Projects). Senza hover, a barra piegata un tocco su un'icona sceglie la pagina e mostra il suo nome per 1,2 secondi.
La pillola salta sulla pagina scelta senza allungarsi, le icone stanno ferme, la barra si piega e si apre di colpo, le pagine di Projects compaiono e spariscono senza scorrere e l'etichetta del nome compare e sparisce senza muoversi; all'arrivo le righe sono già al loro posto.
GSAP 3.15.0, Atkinson Hyperlegible Next (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 7,3 KB; le librerie: GSAP 28 KB.
Provata il 4 ottobre 2026
Puoi usarla nei tuoi progetti e in quelli dei tuoi clienti. Non puoi rivenderla né ridistribuirla così com’è. GSAP resta sotto la sua licenza Standard. Licenza completa.
Con l’email e la password del tuo account.
oppure con l’email
Hai fatto l’accesso come .
Con l’account scarichi lo zip di ogni animazione e di ogni pacchetto, gratis.