
Il pulsante da far scorrere
Pulsanti, Fisica, Transizioni
NuovaGratis
Un filtro per il prezzo di una notte sopra l’istogramma degli alloggi: le due maniglie seguono la mano su molle allungandosi un poco, le barre cambiano colore con un saltello quando una maniglia ci passa sopra, i due prezzi si uniscono quando si incontrano e il numero degli alloggi conta su e giù.
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 price range</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/sofia-sans@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the price range: two handles on springs over a histogram of prices; the bars light up with a little jump as a
handle goes over them, the two prices join when they meet, and the number of stays counts up and down -->
<section class="price" aria-labelledby="price-title" data-price data-autoclic>
<header class="price__head">
<div>
<h2 class="price__title" id="price-title">Price per night</h2>
<p class="price__note">Before taxes and fees</p>
</div>
<p class="price__count"><span data-count>0</span> stays</p>
</header>
<div class="price__chart" data-chart>
<div class="price__bars" aria-hidden="true" data-bars></div>
<div class="price__track" aria-hidden="true"><span class="price__fill" data-fill></span></div>
<span class="price__thumb" aria-hidden="true" data-thumb></span>
<span class="price__thumb" aria-hidden="true" data-thumb></span>
<span class="price__tag" aria-hidden="true" data-tag></span>
<span class="price__tag" aria-hidden="true" data-tag></span>
<span class="price__tag price__tag--both" aria-hidden="true" data-both></span>
<input class="price__range" type="range" aria-label="Minimum price" data-range>
<input class="price__range" type="range" aria-label="Maximum price" data-range>
</div>
<div class="price__fields">
<label class="field">
<span class="field__label">Minimum</span>
<span class="field__box"><span aria-hidden="true">€</span><input class="field__input" type="text" inputmode="numeric" autocomplete="off" data-field></span>
</label>
<label class="field">
<span class="field__label">Maximum</span>
<span class="field__box"><span aria-hidden="true">€</span><input class="field__input" type="text" inputmode="numeric" autocomplete="off" data-field></span>
</label>
</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>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.
24 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 fascia di prezzo» da Animorio e adattala al mio sitoOgni maniglia va verso il prezzo scelto (arrotondato a STEP) su una molla (SPRING), calcolata sul ticker di GSAP a passi di 4 millisecondi; la velocità della molla la allunga (scaleX fino a 1,28, e un poco più sottile). Le maniglie si fermano un passo prima l’una dell’altra, così non si scavalcano.
Ogni barra ha una sua molla (POP) fra 0 (fuori) e 1 (dentro): è dentro quando il suo centro sta fra le due maniglie dove sono adesso, così cambia proprio quando una maniglia ci passa sopra. Il colore va dal grigio al verde acqua con la molla; quando la molla va oltre (poco frenata, salta) la barra si allunga entrando e si accorcia uscendo.
Le etichette stanno sotto le maniglie, tenute dentro il grafico; quando fra le due restano meno di 8 pixel lasciano il posto, in dissolvenza, a un’etichetta sola col prezzo minimo e massimo, al centro fra le maniglie.
I prezzi degli alloggi sono una serie fissa (gli stessi ogni volta, da un generatore con un seme): l’istogramma li conta in BARS gruppi, e il numero in alto è quanti stanno fra i due prezzi scelti, portato al valore nuovo in 0,5 secondi.
Sotto le maniglie disegnate ci sono due slider veri (input range) con aria-valuetext in euro: col Tab si raggiungono, le frecce muovono di STEP, Pagina su e giù di più, Inizio e Fine agli estremi, e la maniglia disegnata mostra la focalizzazione. Le caselle prendono un prezzo e lo confermano con Invio; una regione aria-live dice quanti alloggi ci sono fra i due prezzi. Un clic da script (l’anteprima della libreria) è una mano finta che porta le maniglie a un intervallo nuovo, una dopo l’altra.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
RANGE | script.js | [20, 380] | Il prezzo più basso e quello più alto della scala, in euro. |
STEP | script.js | 5 | Di quanti euro si sposta una maniglia. |
SPRING | script.js | [520, 0.72] | La molla delle maniglie: quanto è rigida e quanto è frenata. |
POP | script.js | [420, 0.4] | La molla delle barre quando ci passa sopra una maniglia: rigida e poco frenata, così salta. |
BARS | script.js | 36 | Quante barre ha l’istogramma. |
START | script.js | [80, 220] | I prezzi scelti all’apertura della pagina. |
Per i filtri di un sito di prenotazioni, di un negozio, di un’agenzia immobiliare o di un sito di annunci: ovunque si sceglie un intervallo, di prezzo, di superficie, di anni.
Il grafico si trascina col dito senza far scorrere la pagina (touch-action none) e una pressione in un punto qualsiasi prende la maniglia più vicina; le caselle sono a 16 pixel, così Safari su iPhone non ingrandisce la pagina, e aprono la tastiera dei numeri (inputmode numeric).
Le maniglie vanno subito al prezzo scelto, senza molla né allungamento, le barre cambiano colore senza saltare, il numero cambia di colpo, le etichette si uniscono senza dissolvenza e all’apertura niente cresce.
GSAP 3.15.0, Sofia Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,5 KB; le librerie: GSAP 28 KB.
Provata il 3 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.