Rörelse

Videobakgrund på webbplats: vikt, autouppspelning och tillgänglighet

En rörlig hero kan få en webbplats att kännas levande, eller göra den långsam, distraherande och svårläst. Skillnaden är en kort lista med tekniska och designmässiga val.

GradientlyVerifierat Gradiently-konto··5 minuters läsning
Omslag: Raspberry Nightfall · GR·2WHS·A6

Kortversionen

  • En videobakgrund på en webbplats är en ljudlös, loopad video som spelas bakom en sektion, oftast hero-ytan, medan text och knappar ligger ovanpå.
  • Webbläsare tillåter i regel bara autouppspelning av video som är ljudlös, och iPhone kräver dessutom attributet playsinline för att videon ska stanna i sidan.
  • En affischbild ska visas innan videon laddats och när den inte kan spelas, så den måste se ut som en färdig design i sig själv.
  • Besökare som ber om reducerad rörelse ska få stillbilden, och rörligt innehåll som spelas i mer än fem sekunder behöver ett sätt att pausas.
  • Korta, långsamma, ljudlösa loopar komprimeras mycket bättre än livlig film, vilket håller sidan snabb.
På den här sidan

På en webbplats med videobakgrund spelas en ljudlös, loopad video bakom en sektion, oftast hero-ytan, medan rubriken och knapparna ligger ovanpå. Görs det rätt är den lätt, stillsam och valfri: den startar utan ljud, visar en färdig stillbild innan den laddats, pausar för den som föredrar mindre rörelse och gör aldrig orden svårare att läsa. Görs det fel är den det tyngsta och mest distraherande på sidan.

När en videobakgrund är värd det

En videobakgrund förtjänar sin plats när rörelsen är budskapet: vatten för en simskola, ånga för ett kafferosteri, ett långsamt drivande material för ett varumärke vars utseende är dess identitet. Om rörelsen bara är dekoration ser ett lättare alternativ oftast lika bra ut. Jämför valen innan du bestämmer dig.

AlternativSidans viktBäst för
StillbildLågFotografi och sidor där hastighet är viktigast
CSS-gradient, animeradNästan ingentingEnkla drivande och skiftande färger
WebGL-shaderLiten nedladdning, använder grafikchippetLevande texturer, korn och flöde
VideoTung, om den inte är kort och långsamRiktig film, eller rörelse som måste se exakt likadan ut överallt
Video är det enda alternativet för film. För abstrakt rörelse är CSS och shaders ofta lättare.

HTML för en bakgrundsvideo

Fyra attribut gör det viktigaste jobbet. muted låter webbläsaren starta videon automatiskt, eftersom webbläsare i regel blockerar autouppspelning med ljud. playsinline hindrar en iPhone från att öppna den i helskärm. loop upprepar den, och poster visar en stillbild medan den laddas. Eftersom den är dekorativ ska du dölja den för skärmläsare.

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>
Webbläsaren använder den första källan den kan spela: WebM där det stöds, MP4 överallt annars.
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 beskär videon till vilken skärmform som helst. Håll filmens viktiga del nära mitten.

MDN:s guide till video-elementet listar alla attribut. Kom ihåg att autouppspelning är en begäran, inte en garanti: vissa telefoner i strömsparläge spelar inte upp den. Därför måste affischbilden se ut som en färdig design i sig själv.

Håll videofilen lätt

Video är oftast den största filen på en sida som har en. Mjuk, långsam film komprimeras mycket bättre än skarp, livlig film, så designvalet är också ett prestandaval. Håll loopen kort, kring 8 till 15 sekunder, ta bort ljudspåret helt och servera inte en större storlek än hero-ytan någonsin visar. Sätt en storleksbudget innan du exporterar och kontrollera det verkliga resultatet i webbläsarens nätverkspanel.

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
Startinställningar. -an tar bort ljudet, och ett högre CRF-tal ger en mindre, mjukare fil. Höj det tills du ser artefakter och backa sedan ett steg.

Webbplatsens hero 1920 × 1080

1920 × 1080

Telefonbeskärning

1080 × 1920

Gör mastern i 1920 × 1080. På en telefon visar object-fit: cover bara en hög remsa från mitten, så komponera med det i åtanke.

Reducerad rörelse och en pausknapp

Vissa besökare ställer in sin enhet på reducerad rörelse eftersom rörelse gör dem yra eller illamående. Respektera det genom att visa affischbilden i stället för videon. Separat från det kräver WCAG-kriteriet Pause, Stop, Hide att rörligt innehåll som startar automatiskt och pågår i mer än fem sekunder, tillsammans med annat innehåll, går att pausa. En liten, synlig pausknapp löser det.

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'
  }
})
Pausa vid reducerad rörelse, följ inställningen om den ändras och ge alla en pausknapp.

Reducerad rörelse förklarar inställningen och vad mer du bör dra ner på.

Läsbar text över en videobakgrund

Text över video måste läsas mot varje bildruta, inte bara mot affischbilden. Den vanliga lösningen är ett mörkt lager över hela videon, vilket fungerar men plattar ut den. Bättre alternativ: välj lugn film med en stilla del där orden hamnar, håll den ljusaste rörelsen borta från rubriken och använd en stor, kraftig vikt. Vår guide till text över bilder har sju tekniker som lika gärna gäller video.

Öppet nu
Färg som rör sig med dig
Gradiently · @gradiently

Livligt material som går rakt genom rubriken …

Öppet nu
Färg som rör sig med dig
Gradiently · @gradiently

… och samma hero med fältets lugna del bakom orden.

Checklista för videobakgrund

  1. 1

    Avgör att det måste vara video

    Film, eller rörelse som måste se likadan ut överallt. Annars kan du överväga CSS eller en shader.

  2. 2

    Håll den kort, långsam och ljudlös

    8 till 15 sekunder, inget ljudspår, en loop som går ihop.

  3. 3

    Exportera två format och en affischbild

    WebM och MP4, i högst den storlek den visas i, plus en stillbild av första bildrutan.

  4. 4

    Använd de fyra attributen

    autoplay, muted, loop, playsinline, med poster och aria-hidden.

  5. 5

    Respektera rörelseinställningar

    Visa affischbilden vid reducerad rörelse och lägg till en pausknapp.

  6. 6

    Testa på en riktig telefon

    Kontrollera laddtiden på mobildata, i strömsparläge och med den höga beskärningen.

För designen av själva hero-ytan, se bakgrunder till webbplatsens hero. Om din rörliga bakgrund är en Gradiently-Mark kan du exportera den som en loopad MP4-video i upp till 1080p och använda den precis så här.

Vanliga frågor

Varför startar inte min bakgrundsvideo automatiskt?

Webbläsare blockerar i regel autouppspelning med ljud, så lägg till attributet muted. På iPhone behöver du också playsinline, och kom ihåg att strömsparlägen ändå kan stoppa autouppspelning, så en bra affischbild är viktig.

Är en videobakgrund dålig för webbplatsens hastighet?

Det kan den vara, eftersom video oftast är den största filen på sidan. Korta, långsamma, ljudlösa loopar i rätt storlek, i WebM och MP4, håller kostnaden nere.

Vilken storlek ska en bakgrundsvideo på en webbplats ha?

Gör mastern i 1920 × 1080 och servera den inte större än den visas. Mjuk, abstrakt film ser ofta bra ut i lägre upplösning.

Måste bakgrundsvideor vara tillgängliga?

Ja. Dölj dekorativ video för skärmläsare, visa en stillbild för besökare som ber om reducerad rörelse och ge en pausfunktion för rörelse som varar i mer än fem sekunder.

Vad är ett lättare alternativ till en videobakgrund?

En animerad CSS-gradient eller en WebGL-shader kan skapa abstrakt rörelse med en mycket mindre nedladdning, men shaders använder grafikchippet medan de körs.

Dela den här guiden

Skriven av GradientlyVerifierat Gradiently-konto

Teamet bakom Gradiently, ett designverktyg byggt kring Marks: levande gradienter som får allt du gör att kännas som ditt.

Se vår profil