Blocca lo scroll in Webflow (una regola CSS)

Base 4:05 webflowcssnavbarscroll-lockhas-selector

Blocca lo scroll della pagina mentre il nav menu di Webflow è aperto con una sola regola CSS e :has() — niente JavaScript, niente librerie, niente interazioni.

Punti chiave

  • Quando il nav menu di Webflow si apre, Webflow aggiunge automaticamente una classe w--open al menu button — è l'aggancio per un scroll lock in puro CSS.
  • Una regola fa tutto: body:has(.w-nav-button.w--open) { overflow: hidden } — niente JavaScript, niente librerie esterne.
  • Il selettore :has() fa reagire il body allo stato di un discendente, ed è esattamente ciò che rende possibile un scroll lock senza JS.
  • Dove incolli il CSS decide lo scope: Global Styles o l'head della pagina valgono per una pagina; l'head in Site Settings vale per tutte.
  • Evitare JavaScript rende la soluzione più leggera e robusta — una riga di CSS invece di uno script e una libreria.

Capitoli del video

  1. 00:00 Intro
  2. 00:33 Il problema dello scroll
  3. 01:58 La soluzione CSS
  4. 03:12 Test
  5. 03:38 Outro

Alla fine di questa lezione saprai bloccare lo scroll della pagina mentre il nav menu di Webflow è aperto — un fix di UX piccolo ma importante — con una sola riga di CSS e zero JavaScript. È il tipo di soluzione ordinata che fa sembrare un menu mobile finito invece che sciatto.

Il problema è familiare: apri il nav menu su mobile, ma la pagina dietro continua a scrollare, che dà una sensazione trascurata e fa perdere il segno all’utente. Il riflesso solito è tirare fuori uno script. Non serve — Webflow ti dà già tutto ciò che ti occorre.

La chiave è una classe che Webflow aggiunge per te in automatico.

Come funziona

Quando apri un nav menu di Webflow, Webflow aggiunge una combo class w--open al menu button (la sua base class è w-nav-button) e la rimuove quando il menu si chiude. Quella classe che si attiva e disattiva è un segnale di stato perfetto — e il CSS moderno sa leggerlo.

Il selettore :has() fa sì che un parent si dia stile in base a ciò che contiene. Quindi diciamo al body: “ogni volta che contieni un nav button attualmente aperto, nascondi l’overflow”. È tutto il trucco — uno stato che esiste già, letto da un selettore che esiste già:

body:has(.w-nav-button.w--open) {
  overflow: hidden;
}

Mentre il menu è aperto, il body non può scrollare; nel momento in cui si chiude, w--open sparisce e lo scroll torna. Niente interazioni, niente librerie, niente codice tuo da mantenere.

Una cosa da pianificare è lo scope, che dipende da dove incolli la regola. Mettila nel tuo componente Global Styles o nell’head di una singola pagina (Page Settings) e vale solo per quella pagina. Incollala nel codice head del tab Custom Code in Site Settings e vale ovunque. Poi pubblica e testa sul link live — la classe w--open si attiva sul sito reale.

Come si usa

  1. Copia la regolabody:has(.w-nav-button.w--open) { overflow: hidden }.
  2. Scegli lo scope — per una pagina, usa il componente Global Styles o l’head della pagina; per tutto il sito, usa il codice head in Site Settings → Custom Code.
  3. Incolla e pubblica — aggiungi il CSS nel punto scelto e pubblica il sito.
  4. Testa sulla pagina live — apri il nav menu e verifica che la pagina non scrolli, poi chiudilo e verifica che lo scroll torni.

Ecco fatto — una regola CSS pulita invece di uno script, e un menu mobile che si comporta esattamente come la gente si aspetta.

Risorse

Domande frequenti

Come impedisco alla pagina di scrollare quando il nav menu è aperto in Webflow?
Aggiungi una regola CSS: body:has(.w-nav-button.w--open) { overflow: hidden }. Webflow aggiunge la classe w--open al menu button ogni volta che il menu è aperto, quindi questa blocca lo scroll del body mentre è aperto e lo rilascia quando lo chiudi — senza JavaScript.
Posso bloccare lo scroll della pagina in Webflow senza JavaScript?
Sì. Siccome Webflow attiva una classe w--open sul nav button, puoi usare il selettore CSS :has() per impostare l'overflow del body su hidden solo mentre il menu è aperto. È una soluzione pulita da una sola regola, senza script né librerie.
Dove dovrei incollare il CSS dello scroll lock in Webflow?
Per una singola pagina, mettilo nel tuo componente Global Styles o nell'head della pagina tramite Page Settings. Per applicarlo a tutto il sito, incollalo nel codice head del tab Custom Code in Site Settings.
Cos'è la classe w--open in Webflow?
È una combo class che Webflow aggiunge automaticamente al menu button del nav (w-nav-button) mentre il menu è aperto, e rimuove quando si chiude. Puoi targettarla in CSS — come in questa regola di scroll lock — per reagire allo stato aperto/chiuso del menu senza scrivere alcun codice tuo.

← Torna al corso