Movimento

Video di sfondo per siti web: peso, autoplay e accessibilità

Una sezione hero in movimento può far sembrare vivo un sito, oppure renderlo lento, dispersivo e difficile da leggere. La differenza sta in un breve elenco di scelte tecniche e di design.

GradientlyAccount Gradiently verificato··5 min di lettura
Copertina: Raspberry Nightfall · GR·2WHS·A6

In breve

  • Un video di sfondo per un sito web è un video muto e in loop che scorre dietro una sezione, di solito la hero, mentre testo e pulsanti stanno sopra.
  • In genere i browser permettono la riproduzione automatica di un video solo se è muto, e gli iPhone richiedono anche l’attributo playsinline per tenerlo dentro la pagina.
  • Un’immagine poster deve comparire prima che il video si carichi e ogni volta che non può essere riprodotto, quindi deve sembrare un design finito anche da sola.
  • Chi chiede meno movimento dovrebbe vedere il poster fermo, e i contenuti in movimento che durano più di cinque secondi richiedono un modo per metterli in pausa.
  • Loop brevi, lenti e silenziosi si comprimono molto meglio di riprese movimentate, e questo mantiene veloce la pagina.
In questa pagina

In un video di sfondo per un sito web, un video muto e in loop scorre dietro una sezione, il più delle volte la hero, mentre titolo e pulsanti stanno sopra. Fatto bene, è leggero, silenzioso e facoltativo: parte in automatico senza audio, mostra un’immagine fissa finita prima di caricarsi, si ferma per chi preferisce meno movimento e non rende mai le parole più difficili da leggere. Fatto male, è la cosa più pesante e dispersiva della pagina.

Quando vale la pena usare un video di sfondo

Un video di sfondo si guadagna il posto quando il movimento è il messaggio: l’acqua per una scuola di nuoto, il vapore per una torrefazione, una materia che scorre lenta per un brand la cui estetica è la sua identità. Se il movimento è solo decorazione, un’alternativa più leggera di solito rende altrettanto bene. Confronta le opzioni prima di decidere.

OpzionePeso della paginaIdeale per
Immagine fissaLeggeroFotografia, e pagine in cui la velocità conta più di tutto
Gradiente CSS animatoQuasi nullaDerive semplici e cambi di colore
Shader WebGLDownload leggero, usa la GPUTexture vive, grana e flusso
VideoPesante, a meno che sia breve e lentoRiprese reali, o movimento che deve apparire identico ovunque
Il video è l’unica opzione per le riprese reali. Per il movimento astratto, il CSS e gli shader sono spesso più leggeri.

L’HTML per un video di sfondo

Quattro attributi fanno il lavoro essenziale. muted permette al browser di avviarlo in automatico, dato che in genere i browser bloccano la riproduzione automatica con audio. playsinline impedisce a un iPhone di aprirlo a schermo intero. loop lo ripete, e poster mostra un’immagine fissa mentre si carica. Poiché è decorativo, nascondilo agli screen reader.

html
<section class="hero">
  <video class="hero-video" autoplay muted loop playsinline
         poster="/media/hero-poster.jpg" aria-hidden="true">
    <source src="/media/hero.webm" type="video/webm">
    <source src="/media/hero.mp4" type="video/mp4">
  </video>

  <div class="hero-content">
    <h1>Colour that moves with you</h1>
    <button class="hero-pause" type="button">Pause background</button>
  </div>
</section>
Il browser usa la prima fonte che riesce a riprodurre: WebM dove è supportato, MP4 ovunque altrove.
css
.hero {
  position: relative;
  min-height: 80vh;
  overflow: hidden;
  background: #120a2e; /* shows before the poster arrives */
}
.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover; /* fills any shape without stretching */
}
.hero-content {
  position: relative; /* sits above the video */
}
object-fit: cover ritaglia il video per qualsiasi forma di schermo. Tieni la parte importante della ripresa vicino al centro.

La guida di MDN all’elemento video elenca ogni attributo. Ricorda che la riproduzione automatica è una richiesta, non una garanzia: alcuni telefoni in modalità risparmio energetico non la avviano. Per questo il poster deve sembrare un design finito anche da solo.

Mantenere leggero il file video

Il video è di solito il file più grande di qualsiasi pagina che ne abbia uno. Le riprese morbide e lente si comprimono molto meglio di quelle nitide e movimentate, quindi la scelta di design è anche una scelta di prestazioni. Tieni il loop breve, intorno agli 8 a 15 secondi, rimuovi del tutto la traccia audio e non servire una dimensione più grande di quella che la hero mostra davvero. Fissa un budget di peso prima di esportare, e verifica il risultato reale nel pannello di rete del browser.

bash
# MP4 (H.264): silent, web-ready, starts playing before it fully downloads
ffmpeg -i hero-master.mov -an -c:v libx264 -crf 26 -preset slow \
  -pix_fmt yuv420p -movflags +faststart -vf "scale=1920:-2" hero.mp4

# WebM (VP9): often smaller at similar quality
ffmpeg -i hero-master.mov -an -c:v libvpx-vp9 -crf 36 -b:v 0 \
  -vf "scale=1920:-2" hero.webm

# Poster: the first frame as a JPEG
ffmpeg -i hero.mp4 -frames:v 1 -q:v 3 hero-poster.jpg
Impostazioni di partenza. -an rimuove l’audio; un valore CRF più alto significa un file più piccolo e più morbido. Alzalo finché non vedi artefatti, poi torna indietro di un passo.

Hero del sito 1920 × 1080

1920 × 1080

Ritaglio per telefono

1080 × 1920

Master a 1920 × 1080. Su un telefono, object-fit: cover mostra solo una fetta verticale dal centro, quindi componi tenendone conto.

Movimento ridotto e un pulsante di pausa

Alcuni visitatori impostano il dispositivo per ridurre il movimento perché li fa sentire storditi o male. Rispettalo mostrando il poster al posto del video. A parte questo, il criterio WCAG Pause, Stop, Hide chiede che i contenuti in movimento che partono da soli e durano più di cinque secondi, accanto ad altri contenuti, si possano mettere in pausa. Un piccolo pulsante di pausa visibile basta.

js
const video = document.querySelector('.hero-video')
const button = document.querySelector('.hero-pause')
const reduce = matchMedia('(prefers-reduced-motion: reduce)')

function follow() {
  if (reduce.matches) video.pause()
  else video.play().catch(() => {}) // the browser may still refuse
}
reduce.addEventListener('change', follow)
follow()

button.addEventListener('click', () => {
  if (video.paused) {
    video.play()
    button.textContent = 'Pause background'
  } else {
    video.pause()
    button.textContent = 'Play background'
  }
})
Metti in pausa per il movimento ridotto, segui l’impostazione se cambia, e dai a tutti un pulsante di pausa.

Il movimento ridotto spiega l’impostazione e cos’altro ridurre.

Testo leggibile su un video di sfondo

Il testo sopra un video deve leggersi su ogni fotogramma, non solo sul poster. La soluzione abituale è una velatura scura su tutto il video, che funziona ma lo appiattisce. Opzioni migliori: scegli riprese calme con una zona quieta dove vanno le parole, tieni il movimento più luminoso lontano dal titolo e usa un peso grande e marcato. La nostra guida al testo su immagine ha sette tecniche che valgono anche per il video.

Ora aperto
Colore che si muove con te
Gradiently · @gradiently

Una materia movimentata che attraversa il titolo…

Ora aperto
Colore che si muove con te
Gradiently · @gradiently

…e la stessa hero con la parte calma del campo dietro le parole.

Checklist per il video di sfondo

  1. 1

    Decidi se deve proprio essere un video

    Riprese reali, o movimento che deve apparire identico ovunque. Altrimenti valuta il CSS o uno shader.

  2. 2

    Tienilo breve, lento e silenzioso

    Da 8 a 15 secondi, nessuna traccia audio, un loop che combacia.

  3. 3

    Esporta due formati e un poster

    WebM e MP4, non più grandi di come vengono mostrati, più un primo fotogramma fisso.

  4. 4

    Usa i quattro attributi

    autoplay, muted, loop, playsinline, con poster e aria-hidden.

  5. 5

    Rispetta le preferenze sul movimento

    Mostra il poster per il movimento ridotto e aggiungi un pulsante di pausa.

  6. 6

    Prova su un telefono vero

    Controlla il tempo di caricamento con i dati mobili, la modalità risparmio energetico e il ritaglio verticale.

Per il design della hero in sé, vedi gli sfondi per la hero di un sito. Se il tuo sfondo in movimento è un Mark di Gradiently, puoi esportarlo come video MP4 in loop fino a 1080p e usarlo esattamente così.

Le domande più frequenti

Perché il mio video di sfondo non parte in automatico?

In genere i browser bloccano la riproduzione automatica con audio, quindi aggiungi l’attributo muted. Su iPhone aggiungi anche playsinline, e ricorda che le modalità di risparmio energetico possono comunque bloccarla, quindi un buon poster conta.

Un video di sfondo rallenta il sito?

Può farlo, perché il video è di solito il file più grande della pagina. Loop brevi, lenti e silenziosi della giusta dimensione, in WebM e MP4, contengono il costo.

Quali dimensioni deve avere il video di sfondo di un sito?

Master a 1920 × 1080, senza servirlo più grande di come viene mostrato. Le riprese morbide e astratte spesso rendono bene anche a una risoluzione più bassa.

I video di sfondo devono essere accessibili?

Sì. Nascondi i video decorativi agli screen reader, mostra un’immagine fissa a chi chiede meno movimento e offri un controllo di pausa per il movimento che dura più di cinque secondi.

Qual è un’alternativa più leggera a un video di sfondo?

Un gradiente CSS animato o uno shader WebGL possono creare un movimento astratto con un download molto più piccolo, anche se gli shader usano il chip grafico mentre sono in esecuzione.

Condividi questa guida

Scritto da GradientlyAccount Gradiently verificato

Il team dietro Gradiently, uno strumento di design costruito attorno ai Mark: gradienti vivi che fanno sembrare tuo tutto ciò che progetti.

Vedi il nostro profilo
Tutte le guide su Movimento