L'API Popover arriva nella base di riferimento

È arrivato il momento: Una delle funzionalità per cui ho più hype è disponibile da poco su tutti i browser moderni e fa ufficialmente parte di Baseline 2024. Questa funzionalità è l'API Popover. Popover offre tantissime primitive e incentivi per gli sviluppatori per creare interfacce a più livelli come descrizioni comando, menu, UI per l'insegnamento e altro ancora.

Supporto dei browser

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 125.
  • Safari: 17.

Origine

Ecco alcune brevi funzionalità dei popover:

  • Passa al livello superiore. I popover verranno visualizzati nel livello superiore sopra il resto della pagina, così non dovrai giocare con z-index.
  • Funzionalità per ignorare facilmente. Se fai clic all'esterno dell'area popover, il popover verrà chiuso e ripristinerà lo stato attivo.
  • Gestione predefinita dello stato attivo. Se apri il popover, la scheda successiva si ferma all'interno del popover.
  • Associazioni da tastiera accessibili. Se premi il tasto esc o attivi/disattivi due volte, il popover si chiuderà e ripristinerà lo stato attivo.
  • Associazioni di componenti accessibili. Connessione di un elemento popover a un trigger popover semanticamente.

Creazione di popover

La creazione di popover è piuttosto semplice. Per utilizzare i valori predefiniti, è sufficiente un button per attivare il popover e un elemento da attivare.

  • Innanzitutto, imposta un attributo popover nell'elemento che sarà il popover.
  • A questo punto, aggiungi un id univoco all'elemento popover.
  • Infine, per collegare il pulsante al popover, imposta il valore popovertarget del pulsante sul valore id dell'elemento popover.

Ciò viene mostrato nel seguente codice:

<button popovertarget="my-popover">Open Popover</button>

<div id="my-popover" popover>
  <p><p>I am a popover with more information. Hit <kbd>esc</kbd> or click away to close me.<p></p>
</div>
di Gemini Advanced.
Un esempio base di utilizzo dell'attributo popover.

Per avere un controllo più granulare sui popover, puoi impostare esplicitamente i tipi di popover. Ad esempio, l'utilizzo di un attributo popover semplice senza valore è uguale a popover="auto". Il valore auto consente il comportamento di ignorare la luce e chiude automaticamente altri popover. Utilizza popover="manual" e dovrai aggiungere un pulsante di chiusura. I popover manuali non chiudono altri popover e non consentono agli utenti di ignorarli facendo clic all'esterno dell'interfaccia utente. Per creare un popover manuale, procedi come segue:

<button popovertarget="my-popover" class="trigger-btn"> Open Popover </button>

<div id="my-popover" popover=manual>
  <p>I am a popover with more information. Hit the close button or toggle to close me.<p>
  <button class="close-btn" popovertarget="my-popover" popovertargetaction="hide">
    <span aria-hidden="true">❌</span>
    <span class="sr-only">Close</span>
  </button>
</div>
di Gemini Advanced.
Un esempio di popover manuale.
di Gemini Advanced.

Popover e finestra di dialogo modale

Forse ti starai chiedendo se hai bisogno di un popover quando esiste una finestra di dialogo e la risposta è: forse no.

È importante notare che l'attributo popover non fornisce automaticamente la semantica. Anche se ora puoi creare esperienze in stile dialogo modale utilizzando i popover, ci sono alcune differenze fondamentali tra i due:

Elemento modale <dialog>

  • Aperto con dialog.showModal().
  • dialog.close() chiusa.
  • Rende inerte il resto della pagina.
  • Non supporta il comportamento di chiusura rapida.
  • Puoi definire lo stato aperto con l'attributo [open].
  • Rappresenta dal punto di vista semantico un componente interattivo che blocca l'interazione con il resto della pagina.

Attributo [popover]

  • Può essere aperto con un invocatore dichiarativo (popovertarget).
  • Chiuso con popovertarget (popover automatico) o popovertargetaction=hide (popover manuale).
  • Non rende inerte il resto della pagina.
  • Supporta il comportamento di ignorare poco frequente.
  • Puoi definire lo stato aperto con la pseudo-classe :popover-open.
  • Nessuna semantica intrinseca.

Conclusioni e ulteriori approfondimenti

popover offre molte funzionalità entusiasmanti sulla piattaforma. Per ulteriori informazioni su questa API, comprese informazioni sull'accessibilità della funzione e la documentazione relativa all'insieme di funzionalità, di seguito sono riportate alcune letture consigliate: