
Il pulsante che copia
Pulsanti, Testo, SVG, Fisica
NuovaGratis
Un campo per una password nuova coi caratteri disegnati sopra un campo vero: nascosta, ogni lettera è una stellina che entra girando e l’ultima digitata si vede un attimo mentre l’occhio in fondo sbircia; l’occhio si apre e le stelline tornano lettere una dopo l’altra, con l’iride che segue il cursore, e sotto quattro barre e quattro regole dicono quanto è robusta.
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 password field</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/rubik@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the password field: a real input under drawn characters (stars when hidden, letters when shown), an eye that
shows and hides them, four bars for the strength and the rules ticking themselves off -->
<div class="pw" data-pw data-autoclic>
<label class="pw__label" for="pw-input">Choose a password</label>
<div class="pw__field" data-field>
<input class="pw__input" id="pw-input" type="password" autocomplete="new-password" spellcheck="false" autocapitalize="off" autocorrect="off" aria-describedby="pw-strength pw-rules" data-input>
<div class="pw__row" aria-hidden="true" data-row>
<div class="pw__chars" data-chars>
<span class="pw__sel" data-sel></span>
<span class="pw__caret" data-caret></span>
</div>
</div>
<button class="pw__eye" type="button" aria-controls="pw-input" aria-pressed="false" aria-label="Show password" data-eye>
<svg viewBox="0 0 32 32" aria-hidden="true">
<defs><clipPath id="pw-eye-clip"><path data-eye-clip/></clipPath></defs>
<path class="eye__white" data-eye-white/>
<g clip-path="url(#pw-eye-clip)">
<g data-iris>
<circle class="eye__iris" cx="16" cy="16.5" r="4.8"/>
<circle class="eye__pupil" cx="16" cy="16.5" r="2.1"/>
</g>
</g>
<path class="eye__line" d="M4 16Q16 26 28 16"/>
<path class="eye__line" data-eye-lid/>
<path class="eye__lashes" d="M10 19.75 8.4 22.5M16 21v3.2M22 19.75l1.6 2.75" data-eye-lashes/>
</svg>
</button>
</div>
<div class="pw__meter">
<div class="pw__bars" aria-hidden="true" data-bars><span><i></i></span><span><i></i></span><span><i></i></span><span><i></i></span></div>
<span class="pw__word-clip"><span class="pw__word" id="pw-strength" aria-live="polite" data-word>Strength</span></span>
</div>
<ul class="pw__rules" id="pw-rules" data-rules></ul>
</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.
14 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 «Il campo della password» da Animorio e adattala al mio sitoL’input (type password, autocomplete new-password) copre tutto il campo coi caratteri e il cursore trasparenti (color e -webkit-text-fill-color transparent, caret-color transparent): tasti, incolla, gestori delle password e selezione funzionano da soli. Lo script legge il valore e la selezione a ogni fotogramma del ticker di GSAP (e a ogni input) e disegna quello che trova.
A ogni cambio confronta i caratteri di prima e di dopo (l’inizio uguale e la fine uguale): solo quelli in mezzo escono ed entrano, gli altri scivolano al loro posto nuovo. Nascosto, ogni carattere prende 16 pixel; visibile, la sua larghezza, misurata una volta con measureText su un canvas nel carattere del campo (e di nuovo quando i font sono pronti).
Ogni carattere ha due facce, la lettera e una stellina SVG di tre righe incrociate. A nascondere, la lettera si ribalta con rotationX 90 e sfuma mentre la stellina entra girando da −140 gradi con back.out; a mostrare, il contrario. Uno dopo l’altro, a WAVE secondi: da sinistra mostrando, da destra nascondendo. Un tasto battuto a password nascosta fa vedere la sua lettera per PEEK secondi.
La palpebra di sopra è una curva quadratica col punto di controllo che va da 26 (sulla palpebra di sotto: l’occhio chiuso, con tre ciglia) a 4 (aperto); la stessa curva fa il bianco dell’occhio e il clipPath che taglia l’iride. Aperto, l’iride guarda il cursore (molto a sinistra all’inizio del campo, quasi dritta in fondo), addolcita fotogramma per fotogramma, e ogni BLINK secondi (a caso fra i due) l’occhio sbatte le palpebre; a password nascosta, una lettera che si vede lo apre di un terzo.
Le regole sono quattro: almeno MIN caratteri, una maiuscola, un numero, un simbolo. Il punteggio dà un punto per MIN caratteri, uno per MIN + 4 e uno ciascuno per due, tre e quattro tipi di carattere, fra 1 e 4 (solo Weak sotto i 6 caratteri o con una password comune dentro). Le barre che si accendono si riempiono da sinistra (scaleX con expo.out), quelle che si spengono si svuotano da destra, la parola scorre e le spunte si disegnano con stroke-dashoffset. Col mouse il cursore va dove indicano i caratteri disegnati; un clic da script (l’anteprima della libreria) scrive, mostra, allunga, nasconde e cancella una password senza prendere la focalizzazione.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
PEEK | script.js | 0.7 | I secondi in cui un carattere appena battuto mostra la sua lettera prima di nascondersi (0: mai). |
WAVE | script.js | 0.035 | I secondi fra un carattere e il successivo quando si girano, a mostrare o a nascondere. |
BLINK | script.js | [3, 6] | Ogni quanti secondi l’occhio aperto sbatte le palpebre, a caso fra i due. |
MIN | script.js | 8 | Quanti caratteri vuole almeno una password. |
Nella registrazione a un sito, nel cambio della password, in un’area riservata: ovunque si sceglie una password e conviene dire subito se basta.
Il campo prende la larghezza dello schermo; un tocco apre la tastiera del telefono e mette il cursore dove si è toccato. L’occhio è un pulsante di 44 pixel e le regole restano su due colonne.
Stelline e lettere si scambiano senza giri, i caratteri compaiono e spariscono al loro posto, l’occhio si apre e si chiude senza animazione e non sbatte le palpebre, il cursore non lampeggia; le barre e le spunte si riempiono subito.
GSAP 3.15.0, Rubik (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 9,4 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.