Hjem » Siste artikler » Responsiv håndtering av bilder i HTML: slik får du skarpe, raske og fleksible sider

Responsiv håndtering av bilder i HTML: slik får du skarpe, raske og fleksible sider

Hovedillustrasjon
Hovedillustrasjon. Foto: Ilya Pavlov / Unsplash.

Bilder er ofte det som gjør en side visuelt interessant, men de kan også være den største grunnen til at alt går tregt og ser uklart ut på mobil. God bildeflyt handler ikke bare om å legge inn et<img>-element og håpe på det beste.

I denne guiden ser vi på hvordan du kan bruke HTML til å få mer kontroll på bilder: hvordan gjøre dem responsive, raskere å laste og penere på skjermer med høy oppløsning, uten å gjøre koden unødvendig komplisert.

Grunnleggende: det viktigste du bør vite om <img>

Det enkleste bildeeksempelet ser ofte slik ut:<img src=”bilde.jpg” alt=”Beskrivende tekst”>. Mange stopper her, men da mister du mye funksjonalitet og ytelse. Alt-attributtet bør alltid ha en kort og presis beskrivelse, særlig for skjermlesere og dersom bildet ikke kan lastes.

Selv om HTML-koden ser enkel ut, er det smart å legge inn bådewidthogheightsom tallverdier. Nettleseren bruker disse til å reservere plass før bildet er lastet inn, som gjør siden mer stabil og reduserer ubehagelige hopp i layouten.

Responsiv størrelse med CSS, ikke HTML-hakking

En vanlig feil er å bruke HTML-attributter somwidth=”300″for å krympe et stort bilde. Det fjerner ikke vekten av bildefilen, det bare skalerer ned visningen. Resultatet blir treg lasting og unødvendig databruk på mobil.

La HTML beskrive innholdet, og la CSS styre hvordan det ser ut. En standard og trygg måte å la bilder tilpasse seg bredden er å gi dem stilregelenmax-width: 100%ogheight: auto. Da vil bildet ikke bli bredere enn beholderen, og det vil skalere ned på små skjermer uten å strekke seg rart.

srcset og sizes: samme bilde, flere oppløsninger

Moderne nettlesere kan velge riktig versjon av et bilde dersom du gir dem flere alternativer. Det gjør du medsrcsetogsizes. Poenget er at mobil ikke trenger samme brede bilde som en stor skjerm, og at skjermer med høy tetthet trenger skarpere variant.

Et enkelt eksempel med breddebasert tilnærming kan se slik ut:<img src=”bilde-800.jpg” srcset=”bilde-400.jpg 400w, bilde-800.jpg 800w, bilde-1200.jpg 1200w” sizes=”(max-width: 600px) 100vw, 600px” alt=”…”>. Her får nettleseren beskjed om hvilke alternativer som finnes og hvor brede de er.

Hvordan tenke rundt sizes uten å bli forvirret

Mange skygger unnasizesfordi syntaksen ser vanskelig ut. Men du trenger bare å beskrive hvor bredt bildet normalt vil vises, avhengig av skjermbredden. Nettleseren kombinerer denne informasjonen med skjermens piksel­tetthet for å velge best mulig variant.

I eksemplet ovenfor betyr(max-width: 600px) 100vw, 600pxat på skjermer opptil 600 piksler bredt skal bildet fylle hele visningsbredden, ellers skal det omtrent være 600 piksler bredt. Start med enkle regler, og test med utviklerverktøyet i nettleseren for å se hvilken bildefil som lastes.

Bilder for retina og høyoppløste skjermer

Skjermer med høy tetthet, ofte kalt retina, trenger flere piksler per CSS-piksel for å se skarpe ut. Du kan håndtere dette med en tetthetsbasertsrcset, for eksempel:srcset=”bilde-1x.jpg 1x, bilde-2x.jpg 2x”. Nettleseren velger automatisk variant basert på skjermen.

Vær likevel forsiktig med å alltid servere veldig store filer. Det er ofte bedre å kombinere breddebasertsrcsetog godt komprimerte bilder enn å jage maksimal kvalitet i alle situasjoner. Målet er balanse mellom skarphet og lastetid.

<picture> og art direction: ulike utsnitt på mobil og desktop

Tematisk illustrasjon
Tematisk illustrasjon. Foto: Jackson Sophat / Unsplash.

Noen ganger holder det ikke med forskjellige størrelser, du ønsker også ulik beskjæring. Et klassisk eksempel er et bredt toppbilde som ser fint ut på stor skjerm, men som kutter bort det viktige motivet på mobil. Da kan du bruke<picture>-elementet.

Et enkelt oppsett kan ha en smalere, mer fokusert versjon av bildet for små skjermer og et bredt panoramabilde for større skjermer. Innenfor<picture>legger du flere<source>-elementer med mediespørringer, og avslutter med en vanlig<img>som fallback.

Tilgjengelighet: alt-tekst, dekorative bilder og feilhåndtering

Alt-teksten er mer enn en formalitet. Den brukes av skjermlesere og vises ofte dersom bildet ikke lastes. Prøv å svare på spørsmålet: hva er det viktige innholdet her som ikke står i teksten rundt? Da blir alt-attributtet nyttig uten å være overforklarende.

Hvis bildet kun er dekorativt, kan du settealt=””. Det betyr at skjermlesere kan hoppe over bildet slik at brukeren ikke får unødvendig støy. Unngå å bruke ord som “bilde av” eller filnavn som alt-tekst, med mindre akkurat det er informasjonen som trengs.

Ytelse: filformat, komprimering og lazy loading

Selv god HTML hjelper lite hvis selve bildefilene er enorme. Velg et fornuftig format: tradisjonelt brukesJPEGtil fotografier ogPNGtil grafikk med gjennomsiktighet, mens nyere formater somWebPofte gir mindre filer. Sjekk hva serveren din og målgruppen støtter før du bestemmer deg.

De fleste moderne nettlesere støtter også attributtetloading=”lazy”direkte på<img>. Da venter nettleseren med å laste bildene som ligger langt nede på siden til brukeren nærmer seg. Dette kan redusere startlastingen betydelig, særlig på sider med mange bilder.

Vanlige feil som gjør livet vanskeligere

Noen typiske fallgruver går igjen: å laste ett gigantisk bilde og skalere det ned overalt, å glemme width og height og dermed skape hoppende layout, eller å bruke bakgrunnsbilder i CSS til innhold som egentlig er viktig for forståelsen.

Et godt utgangspunkt er: innholdsbilder som har mening skal ligge i HTML, dekorative mønstre kan ligge i CSS. Gi nettleseren flere størrelser å velge mellom der det gir mening, og test sidene dine på både mobil, middels og stor skjerm før du lanserer.

En enkel sjekkliste for gode bildevaner

Det er ikke nødvendig å implementere alle muligheter på én gang. Start med noen få faste rutiner og bygg videre derfra. En kort sjekkliste kan hjelpe deg å holde nivået jevnt, også i prosjekter som vokser over tid.

  • Sett alltidalt,widthogheightpå innholdsbilder.
  • La CSS styre størrelsen medmax-width: 100%ogheight: auto.
  • Bruksrcsetfor viktige bilder som vises i flere størrelser.
  • Vurderloading=”lazy”for bilder som vises lenger ned på siden.
  • Test hvordan siden laster på mobil med treg tilkobling med utviklerverktøyene.

Med disse grepene får du raskere lastetid, mindre frustrasjon på mobil og et uttrykk som holder seg pent på tvers av skjermer, uten at du må innføre kompliserte verktøy eller tunge bildegallerier.

0 kommentarer