Vai al contenuto
Marketing
Romagnolo

Guida tecnica · per chi sviluppa siti e app

Vetro liquido

Il materiale che Apple ha introdotto con iOS 26 — il «Liquid Glass» — ricostruito in CSS puro, senza librerie. Le demo qui sotto sono vere: passa il dito, la luce segue. Accanto a ogni effetto trovi il codice da copiare.

01 — La ricetta

Quattro ingredienti, zero librerie

Il vetro credibile non è «tanta sfocatura». Sono quattro cose insieme: una tinta chiara e bassa, un backdrop-filter che sfoca e satura (la saturazione è metà del trucco), un orlo che raccoglie la luce sui bordi, e un riflesso che si accende dove passa il dito.

Demo dal vivo — tocca il pannello

.vetro

Il pannello base

Blur 16px, saturazione 1.9, orlo di luce, riflesso al passaggio. Gira su tutto.

.vetro — CSS
.vetro{
  position: relative;
  isolation: isolate;            /* niente z-index che scappa */
  background: rgba(255,255,255,.42); /* tinta chiara, bassa */

  /* il cuore: sfoca E satura il fondo */
  backdrop-filter: blur(16px) saturate(1.9);
  -webkit-backdrop-filter: blur(16px) saturate(1.9);

  border-radius: 22px;
  box-shadow:
    0 1px 0 0 rgba(255,255,255,.9) inset, /* orlo = luce */
    0 -1px 0 0 rgba(255,255,255,.28) inset,
    0 18px 40px -18px rgba(0,0,0,.5);  /* stacco */
}
l’orlo di luce — anello, non bordo
/* Un border sfumato riempie il disco. L'orlo
   vero è una cornice ritagliata con due maschere. */
.vetro::before{
  content:""; position:absolute; inset:0;
  border-radius:inherit; pointer-events:none;
  padding:1.4px;                /* spessore orlo */
  background:linear-gradient(var(--ang,140deg),
    rgba(255,255,255,.92) 0%, transparent 38%,
    transparent 62%, rgba(255,255,255,.28) 100%);
  mask:linear-gradient(#000 0 0) content-box,
       linear-gradient(#000 0 0);
  mask-composite:exclude; -webkit-mask-composite:xor;
}
il riflesso che segue il dito
.vetro::after{
  content:""; position:absolute; inset:0;
  border-radius:inherit; pointer-events:none;
  background:radial-gradient(300px circle
    at var(--mx,30%) var(--my,20%),
    rgba(255,255,255,.5), transparent 62%);
  opacity:0; transition:opacity .3s ease;
}
.vetro:hover::after, .vetro:focus-within::after{opacity:1}
/* JS: aggiorna --mx/--my col puntatore */
el.addEventListener("pointermove", e => {
  const r = el.getBoundingClientRect();
  el.style.setProperty("--mx",
    (e.clientX-r.left)/r.width*100 + "%");
  el.style.setProperty("--my",
    (e.clientY-r.top)/r.height*100 + "%");
});
02 — Le due varianti

Regular e Clear, mai mescolate

Apple ne prevede due sole. Regular è leggibile su qualunque fondo ed è quella che si usa quasi sempre. Clear è più trasparente e pretende uno strato che scurisce sotto: va solo dove sotto ci sono immagini vere. Fuori da un contesto fotografico, Clear fa sparire il testo.

Regular vs Clear

Regular

Ogni giorno

Leggibile anche su colore acceso.

Clear

Solo su foto

Senza velo scuro, il testo sparisce.

.vetro.clear — CSS
.vetro.clear{
  background:rgba(255,255,255,.16); /* più trasparente */
  backdrop-filter:blur(9px) saturate(2.3);
  -webkit-backdrop-filter:blur(9px) saturate(2.3);
}
/* obbligatorio con Clear: velo scuro sotto
   il contenuto, o il testo non si legge. */
.vetro.clear .sotto{
  content:""; position:absolute; inset:0;
  border-radius:inherit; z-index:-1;
  background:linear-gradient(180deg,
    rgba(0,0,0,.30), rgba(0,0,0,.46));
}
03 — Il banco di prova

Dipingerlo, o rifrangerlo davvero

La rifrazione vera esiste: una mappa di spostamento data a feDisplacementMap dentro backdrop-filter. Le righe dietro si piegano sul bordo, come nel vetro reale. Funziona ed è bellissima — ma ha due prezzi. Accendila e giudica.

Fondo a righe — guarda il bordo del pannello
Guarda il bordo: le righe si piegano

Rifrazione spenta — questo è il vetro dipinto, e gira dappertutto.

27×quanto costa la rifrazione vera, misurato su un dispositivo reale: 650 ms a fotogramma contro 23
0quanto costano invece orlo e saturazione: niente di misurabile
Solo Chromeun filtro SVG dentro backdrop-filter su iPhone e Firefox non si vede
Ricalcolola mappa va rifatta a ogni cambio di forma: pesa come un’immagine generata a mano

Il verdetto onesto: sul web la rifrazione vera lasciala stare. Costa ~27 volte tanto, si vede solo su Chrome, e su un telefono è un tasto che risponde dopo mezzo secondo. Quello che l’occhio riconosce come «vetro» — orlo, saturazione, blur basso — non costa nulla. La tecnica completa è nel pezzo di kube.io, utile per capire perché non usarla.

04 — Le regole di Apple

Dove il vetro va, e dove rovina tutto

Dalla sessione Meet Liquid Glass (WWDC 25). Contano perché la tentazione è metterlo ovunque, e il risultato è peggiore che non metterlo affatto.

  • Solo sul livello che galleggia

    Barre, pannelli, comandi sospesi sopra il contenuto. Sul contenuto stesso would make it compete with other elements and muddy the hierarchy.

  • Mai vetro sopra vetro

    Always avoid glass on glass. Se un elemento sta sopra il vetro, usa riempimenti e trasparenza — non un secondo strato.

  • !

    Tinta col contagocce

    When every element is tinted, nothing stands out. Il colore serve a far risaltare una cosa sola.

  • Il contenuto si dissolve, non si taglia

    Lo scroll edge effect: quello che scorre sotto la barra sfuma entrando, invece di sparire di netto contro un bordo.

05 — Sul campo

Quattro trappole, e come uscirne

Non vengono dalla documentazione: vengono da progetti veri in cui erano scattate. Ognuna ha la sua uscita.

  • Su un’app scura non si vede — e non è colpa del vetro

    In un’app quasi-nera la luminosità del fondo era 0,0036 su 1: attraverso il materiale passava quasi-nero su quasi-nero. Il filtro funzionava, non c’era niente da rifrangere.

    Uscita: metti bagliori tenui dietro il vetro (come le isole scure di questa pagina). Senza qualcosa di vivo dietro, non è vetro.

  • !

    Il vetro si mangia il contrasto

    Il colore che scorre dietro arriva fino al testo sopra: un’etichetta scendeva da 5,15 a 3,82 di contrasto quando passava un tasto arancione — sotto la soglia AA.

    Uscita: misura il contrasto componendo l’alpha strato per strato, non a occhio. Se il fondo è vario, tieni la tinta più opaca sotto il testo.

  • Il vetro imprigiona i «fixed»

    Un elemento con backdrop-filter diventa il contenitore di ogni discendente in position:fixed: una tenda a schermo intero esce grande quanto la barra, non quanto lo schermo.

    Uscita: metti il backdrop-filter su uno pseudo-elemento (::before), non sul contenitore.

  • !

    Due fasce sfocate non sono «l’effetto iOS»

    Il blur da solo lo faceva già Windows Vista. Quello che si riconosce di iOS 26 sono la forma e il movimento: la barra che si stacca in una pastiglia sospesa, la compressione a 0,95 al tocco, le molle da 0,3 s.

    Uscita: spendi il budget su forma e animazione, non su più sfocatura.

06 — Accessibilità

Tre interruttori: su iPhone li scatta il sistema, sul web tu

Su iOS li applica il sistema operativo. Sul web vanno scritti a mano: senza, escludi chi ha impostato il telefono per meno trasparenza, più contrasto o niente animazioni. Sono tre media query, in fondo al foglio.

accessibilità — da incollare sempre
/* meno trasparenza: spegni il blur, alza la tinta */
@media (prefers-reduced-transparency: reduce){
  .vetro{ backdrop-filter:none; -webkit-backdrop-filter:none;
          background:var(--fondo-solido); }
}
/* più contrasto: via i veli, bordo netto */
@media (prefers-contrast: more){
  .vetro{ background:var(--fondo-solido);
          border:1px solid var(--ink); }
}
/* niente moto: ferma derive e molle */
@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; transition:none !important; }
}
07 — La decisione

Quando usarlo, quando no

Il vetro è vistoso per costruzione. Sta bene dove la sua vistosità aiuta a capire cosa galleggia sopra cosa, e diventa rumore ovunque il contenuto debba solo essere letto.

✓ Sì, ci sta

  • Barre di navigazione e tab sospese
  • Comandi sopra una mappa, una foto, un video
  • Menu, popover, notifiche che stanno «sopra»
  • Un hero con un fondo vivo dietro

✕ No, meglio piatto

  • Testo lungo da leggere (articoli, form)
  • Tabelle e dati da scansionare
  • Fondi scuri e piatti, senza niente dietro
  • Interfacce «calme» dove il vetro griderebbe
08 — Kit di partenza

Tutto il necessario, in un blocco

Copia, incolla, metti la classe .vetro su una barra o un pannello, e aggiungi due bagliori dietro. Include già l’accessibilità.

liquid-glass.css — minimo indispensabile
:root{ --fondo-solido:#FAF6EE; }

.vetro{
  position:relative; isolation:isolate;
  background:rgba(255,255,255,.42);
  backdrop-filter:blur(16px) saturate(1.9);
  -webkit-backdrop-filter:blur(16px) saturate(1.9);
  border-radius:22px;
  box-shadow:
    0 1px 0 0 rgba(255,255,255,.9) inset,
    0 -1px 0 0 rgba(255,255,255,.28) inset,
    0 18px 40px -18px rgba(0,0,0,.5);
}
.vetro::before{                /* orlo di luce */
  content:""; position:absolute; inset:0; padding:1.4px;
  border-radius:inherit; pointer-events:none;
  background:linear-gradient(140deg,
    rgba(255,255,255,.92) 0%, transparent 38%,
    transparent 62%, rgba(255,255,255,.28) 100%);
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  mask-composite:exclude; -webkit-mask-composite:xor;
}
.vetro::after{                 /* riflesso al dito (--mx/--my via JS) */
  content:""; position:absolute; inset:0; border-radius:inherit;
  pointer-events:none; opacity:0; transition:opacity .3s ease;
  background:radial-gradient(300px circle at var(--mx,30%) var(--my,20%),
    rgba(255,255,255,.5), transparent 62%);
}
.vetro:hover::after, .vetro:focus-within::after{ opacity:1 }

/* accessibilità: non è opzionale */
@media (prefers-reduced-transparency: reduce){
  .vetro{ backdrop-filter:none; -webkit-backdrop-filter:none; background:var(--fondo-solido); }
}
@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; transition:none !important; }
}

In tre righe

Il vetro mostra il fondo — dagli qualcosa di vivo da mostrare, o è una scatola grigia.

Saturazione e orlo fanno l’effetto, non la sfocatura. E costano zero.

La rifrazione vera lasciala stare: 27× di costo, solo Chrome. Il salto è nella forma e nel movimento, non nel materiale.

Il vetro è solo uno dei tanti modi di far parlare un sito. Se vuoi la mappa completa — parallasse, brutalismo, bento, dark mode e gli altri — leggi la nostra guida agli stili dei siti web.

Regole dalla sessione Apple Meet Liquid Glass (WWDC 25). Misure di performance e contrasto prese su progetti reali. Tecnica della rifrazione da kube.io. — Guida a cura di Marketing Romagnolo.
Marketing Romagnolo
Prenota una calloppure scrivici su WhatsApp