Vai al contenuto
animorio
EN
Torna alla libreria

L’inchiostro sul bottone

Bottoni quadrati dove una pennellata d’inchiostro entra dal lato da cui arrivi ed esce da quello da cui te ne vai, e il testo cambia colore proprio sul bordo della pennellata.

HoverGSAP, Solo CSSFacileGratis

Il codice

Una cartella che funziona da sola: index.html, style.css, script.js e le librerie da CDN.

<!doctype html>
<html lang="it">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>L’inchiostro sul bottone</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/mona-sans@5.3.0/standard.css">
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <main class="banco">
    <p class="nota" data-nota>Passa sopra i bottoni: l’inchiostro entra dal lato da cui arrivi ed esce da quello da cui te ne vai.</p>
    <section class="invito">
      <h1 class="invito__titolo">Stampiamo a mano, una pagina alla volta.</h1>
      <p class="invito__testo">Carta di cotone, caratteri di piombo e un torchio del 1932. Raccontaci cosa ti serve.</p>
      <div class="invito__bottoni">
        <a class="bottone bottone--pieno bottone--grande" href="#" data-bottone><span class="bottone__testo">Chiedi un preventivo<svg class="bottone__freccia" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="M2.5 8h10.5M9 4l4 4-4 4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Chiedi un preventivo<svg class="bottone__freccia" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="M2.5 8h10.5M9 4l4 4-4 4" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/></svg></span></span></a>
        <a class="bottone bottone--vuoto bottone--grande" href="#" data-bottone><span class="bottone__testo">Guarda i lavori</span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Guarda i lavori</span></span></a>
      </div>
      <p class="invito__etichetta">Cosa stampiamo</p>
      <div class="invito__cartellini">
        <a class="bottone bottone--cartellino" href="#" data-bottone><span class="bottone__testo">Biglietti</span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Biglietti</span></span></a><a class="bottone bottone--cartellino" href="#" data-bottone><span class="bottone__testo">Inviti</span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Inviti</span></span></a><a class="bottone bottone--cartellino" href="#" data-bottone><span class="bottone__testo">Etichette</span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Etichette</span></span></a><a class="bottone bottone--cartellino" href="#" data-bottone><span class="bottone__testo">Manifesti</span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Manifesti</span></span></a><a class="bottone bottone--cartellino" href="#" data-bottone><span class="bottone__testo">Menù</span><span class="bottone__inchiostro" aria-hidden="true"><span class="bottone__testo">Menù</span></span></a>
      </div>
    </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>

Cosa fa

Una piccola pagina di una tipografia con due bottoni grandi e cinque cartellini. Passando col mouse su un bottone, l’inchiostro lo attraversa come una pennellata dal bordo frastagliato: se arrivi da sinistra entra da sinistra, se arrivi da destra entra da destra. Il testo e la freccia cambiano colore esattamente dove passa il bordo, a metà parola. Andandosene, l’inchiostro esce dalla parte verso cui vai; se torni sopra mentre sta uscendo, ci ripensa e torna indietro da dov’è. Il bottone pieno si inchiostra di lampone, quello vuoto di nero, i cartellini di verde. Appena aperta la pagina, se nessuno ci è ancora passato sopra, il primo bottone fa da solo una pennellata lenta, per invitare.

Come funziona

Due bottoni in uno

Dentro ogni bottone c’è una seconda copia, in position absolute sopra la prima, con i colori già inchiostrati e lo stesso testo nello stesso punto. Tagliando la copia si scopre l’inchiostro, e il testo di sotto e quello di sopra si incontrano sul taglio: il colore si spezza proprio lì, senza trucchi di fusione.

Una striscia fra due bordi

Il taglio è un clip-path polygon che va da var(--da) a var(--a), con nove punti per lato spostati di qualche pixel in avanti e indietro: il bordo sembra quello di un pennello. Da fermo tutti e due i bordi stanno fuori, al −12%; entrando da sinistra --a corre al 112%, entrando da destra --da corre al −12%.

Da dove arrivi, dove vai

Un solo ascoltatore di pointermove sulla finestra guarda quale bottone c’è sotto il puntatore: quando cambia, esce dal vecchio e entra nel nuovo, e il lato è la metà del bottone in cui sta il puntatore in quel momento. Uscendo a destra corre il bordo sinistro, uscendo a sinistra il destro.

Interrompibile

GSAP anima le due variabili CSS: entrare dura 0,45 secondi in power3.out, uscire 0,38 in power2.inOut. Se la striscia non è vuota quando rientri, non riparte dal bordo: le due variabili ripartono da dove sono, e la pennellata torna indietro senza scatti.

Valori da cambiare

NomeFileDi partenzaCosa cambia
ENTRA, ESCEscript.js0.45, 0.38I secondi per coprire e per scoprire il bottone.
--inchiostro-fondo, --inchiostro-testostyle.cssper varianteI colori dell’inchiostro e del testo inchiostrato di ogni variante (pieno, vuoto, cartellino).
clip-pathstyle.css9 punti per latoIl bordo della pennellata: più punti e spostamenti più grandi, pennello più ruvido.

Quando usarla

Per i bottoni principali di un sito che vuole un tocco fatto a mano: botteghe, tipografie, ristoranti, studi. Funziona con qualunque testo e qualunque colore.

Sul telefono

Toccando un bottone l’inchiostro entra dal lato del dito e dopo un attimo esce a destra: il gesto resta, anche senza il passaggio del mouse.

Con il movimento ridotto

Niente pennellata che corre: l’inchiostro compare e sparisce sul posto con una dissolvenza di 150 millesimi.

Trappole

  • Il testo della copia inchiostrata deve stare esattamente sopra quello della base: stesso padding, stessa riga, stessa altezza, o sul bordo si vede un testo doppio.
  • Con pointerenter e pointerleave su bottoni con figli, spostarsi da un figlio all’altro può far uscire e rientrare l’inchiostro: meglio chiedersi a ogni pointermove quale bottone c’è sotto.
  • La striscia deve partire e finire fuori dal bottone (qui al −12% e al 112%), o il bordo frastagliato resta visibile sul lato.
  • Il clip-path taglia anche il contorno di fuoco della copia: il contorno va messo sul bottone, con outline e un po’ di offset.

Librerie

GSAP 3.15.0, Mona Sans (font variabile) 5.3.0.

Peso: 11 KB dei nostri file.

Collaudo

Provata il 27 settembre 2026

  • Computer: Fatto
  • Telefono: Fatto
  • Movimento ridotto: Fatto
  • Safari su iPhone: Fatto

Licenza d’uso

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.

Tutte le animazioni