{"id":257320,"date":"2022-12-31T09:20:00","date_gmt":"2022-12-31T06:20:00","guid":{"rendered":"https:\/\/inform.click\/fa-responsive-nettsteder-til-a-fungere\/"},"modified":"2022-12-31T09:20:00","modified_gmt":"2022-12-31T06:20:00","slug":"fa-responsive-nettsteder-til-a-fungere","status":"publish","type":"post","link":"https:\/\/inform.click\/no\/fa-responsive-nettsteder-til-a-fungere\/","title":{"rendered":"F\u00e5 responsive nettsteder til \u00e5 fungere"},"content":{"rendered":"<p>\n  Det var en tid da du trygt kunne skille mellom en stasjon\u00e6r nettside og en mobil nettside. Faktisk s\u00e5 mye at en hel bransje vokste opp rundt \u00e5 gjenbruke skrivebordssider for mobil.\n<\/p>\n<p>\n  En stund var du ingen hvis du ikke hadde en egen mobilside p\u00e5 et eget domene. S\u00e5 begynte ting \u00e5 endre seg.\n<\/p>\n<p>\n  Mobilskjermer er forbedret til det ugjenkjennelige. Det samme gjorde mobilnettlesere. Nettbrett kastet et annet element inn i ligningen. 4G kom med. Retina-skjermer tilb\u00f8d nye niv\u00e5er av klarhet for sluttbrukere.\n<\/p>\n<p>\n  Plutselig s\u00e5 grensen mellom desktop og mobil uklar ut.\n<\/p>\n<p>\n  Samtidig var det et \u00f8kende mangfold i st\u00f8rrelsen og oppl\u00f8sningen p\u00e5 stasjon\u00e6re skjermer.\n<\/p>\n<p>\n  Og en \u00f8kende hodepine for webdesignere.\n<\/p>\n<p>\n  Borte var de dagene da du bare m\u00e5tte ta hensyn til en h\u00e5ndfull viewport-st\u00f8rrelser. Ting ble komplisert.\n<\/p>\n<p>\n  Heldigvis var hjelpen tilgjengelig i form av medieforesp\u00f8rsler og konseptet med responsiv design.\n<\/p>\n<p>\n  Takket v\u00e6re mediesp\u00f8rringer ble det mulig \u00e5 variere stiler og layout \u2013 til og med innhold \u2013 avhengig av brukerens visningsportbredde og skjermoppl\u00f8sning. Mediesp\u00f8rringer er selvf\u00f8lgelig p\u00e5 ingen m\u00e5te det eneste verkt\u00f8yet i den responsive designerens trikspose, men det er rimelig \u00e5 si at de danner grunnlaget for teknikken.\n<\/p>\n<p>\n  Dette var gode nyheter for mobil. Responsiv design betydde at du effektivt kunne levere forskjellige versjoner av samme nettsted til forskjellige enheter. Alt uten \u00e5 utvikle et eget mobilnettsted p\u00e5 et annet domene.\n<\/p>\n<h4>\n  Hva med ytelse?<br \/>\n<\/h4>\n<p>\n  Nettstedseiere begynner \u00e5 innse at sluttbrukere bryr seg om ytelse. Spesielt forhandlere begynner \u00e5 forst\u00e5 at barbering av millisekunder av lastetid kan oversettes til millioner p\u00e5 balansen.\n<\/p>\n<p>\n  Heldigvis tilbyr responsive nettsteder \u00e9n klar ytelsesfordel i forhold til deres dedikerte mobile fettere: viderekoblingen til et mobildomene er eliminert.\n<\/p>\n<p>\n  Til tross for dette har responsiv design klart \u00e5 skaffe seg litt rykte for d\u00e5rlig ytelse.\n<\/p>\n<p>\n  P\u00e5 noen m\u00e5ter er dette ganske urettferdig, men det er verdt \u00e5 se p\u00e5 de ekstra ytelsesutfordringene som responsiv design kommer p\u00e5 de uforsiktige&#8230;\n<\/p>\n<h5>\n  Bilder<br \/>\n<\/h5>\n<p>\n  Bildefilene er store. Og fordi de er store, har de ofte skylden for trege lastetider. De er derfor et godt sted \u00e5 starte for alle som pr\u00f8ver \u00e5 optimalisere ytelsen til et nettsted.\n<\/p>\n<p>\n  Dessverre var en av de f\u00f8rste l\u00f8sningene for \u00e5 levere bilder responsivt ikke bra for ytelsen.\n<\/p>\n<p>\n  Teknikken er nydelig enkel. Bare bruk maks-bredde: 100 % for \u00e5 s\u00f8rge for at bildene skaleres til bredden p\u00e5 elementet som inneholder:\n<\/p>\n<pre><code>img\n{\nmax-width: 100%;\n}<\/code><\/pre>\n<p>\n  Ettersom beholderen krymper for \u00e5 passe til mindre visningsporter, vil alle bilder inni krympe med den. Lett!\n<\/p>\n<p>\n  Men det er et problem. St\u00f8rrelsen p\u00e5 bildet kan krympe p\u00e5 skjermen, men st\u00f8rrelsen p\u00e5 filen forblir den samme. Dette er langt fra ideelt sett fra et ytelsessynspunkt. Du kan sende et bilde p\u00e5 800 x 800 piksler nedover ledningen, bare for at det skal vises i 80 x 80 piksler: med andre ord, du kan overf\u00f8re hundrevis (eller tusenvis) av un\u00f8dvendige bytes. Ikke bare vil bildet ta lang tid \u00e5 laste, alle de overfl\u00f8dige bytene kan t\u00f8mme sluttbrukerens verdifulle datakvote.\n<\/p>\n<p>\n  Dette er imidlertid ikke den eneste \u2013 og heller ikke den beste \u2013 m\u00e5ten \u00e5 levere responsive bilder p\u00e5. For det f\u00f8rste vil ikke et bilde som fungerer med 800 piksler i bredden n\u00f8dvendigvis fungere like bra i forskjellige deler av den st\u00f8rrelsen.\n<\/p>\n<p>\n  For \u00e5 h\u00e5ndtere dette kan du bruke en mediesp\u00f8rring til \u00e5 vise forskjellige versjoner av bildet avhengig av visningsportens st\u00f8rrelse ved \u00e5 bruke en mediesp\u00f8rring og vise: ingen.\n<\/p>\n<p>\n  <strong>CSS:<\/strong>\n<\/p>\n<pre><code>@media (min-width: 601px) {\n#croppedImage\n{\ndisplay:none;\n}\n}\n@media (max-width: 600px) {\n#largeImage\n{\ndisplay:none;\n}\n}<\/code><\/pre>\n<p>\n  <strong>HTML:<\/strong>\n<\/p>\n<pre><code>&lt;img id=\"largeImage\" width=\"400\" height=\"400\" alt=\"\" src=\"images\/largeImage.webp\" \/&gt;\n&lt;img id=\"croppedImage\" width=\"200\" height=\"200\" alt=\"\" src=\"images\/croppedImage.webp\" \/&gt;<\/code><\/pre>\n<p>\n  Dette lar deg vise forskjellige versjoner av et bilde, i stedet for bare det samme bildet i forskjellige st\u00f8rrelser. Den reduserer imidlertid ikke antall byte. Faktisk vil den totale sidest\u00f8rrelsen v\u00e6re st\u00f8rre, siden alle bildene vil bli lastet inn, enten de vises eller ikke.\n<\/p>\n<p>\n  Et bedre alternativ \u2013 hvis det er praktisk \u2013 er \u00e5 bruke bakgrunnsbilder i stedet for <code>&lt;img src=\"https:\/\/inform.click\/wp-content\/uploads\/2024\/11\/inform.click\" \/&gt;<\/code>elementer. Dette er \u00e5 foretrekke fordi bilder referert til i CSS lastes bare hvis de brukes (s\u00e5 lenge de ikke er data-URIer):\n<\/p>\n<pre><code>@media (min-width: 601px) {\n#largeImage\n{\nwidth:400px;\nheight:400px;\nbackground-image:url(\/images\/largeImage.webp);\n}\n#croppedImage\n{\ndisplay:none;\n}\n}\n \n@media (max-width: 600px) {\n#croppedImage\n{\nwidth:200px;\nheight:200px;\nbackground-image:url(\/images\/croppedImage.webp);\n}\n#largeImage\n{\ndisplay:none;\n}\n}<\/code><\/pre>\n<p>\n  Dette fungerer bra: bes\u00f8kende laster bare ned bildene de trenger, n\u00e5r og n\u00e5r de trenger dem. Problemet er at det er uryddig og effektivt behandler innhold som stil. Som s\u00e5dan skaper det potensielt et vedlikeholdsproblem og kan ogs\u00e5 f\u00f8re til at viktige bilder blir ignorert av s\u00f8kemotorer.\n<\/p>\n<p>\n  I stedet, hvorfor ikke bruke SVG (skalerbar vektorgrafikk): et bildeformat som skaleres av natur? SVG-bilder har ogs\u00e5 fordelen at de enkelt kan styles med CSS (se <a href=\"http:\/\/tympanus.net\/codrops\/2014\/08\/19\/making-svgs-responsive-with-css\/\" target=\"_blank\" rel=\"noopener\">denne flotte oppl\u00e6ringen<\/a> om hvordan du gj\u00f8r SVG-er responsive med CSS). Dette er perfekt for ikoner og logoer, men du vil dessverre ikke kunne bruke SVG-er for bilder \u2013 for disse m\u00e5 du ty til rasterformater, som JPEG.\n<\/p>\n<p>\n  Et annet alternativ er \u00e5 bruke en av en rekke JavaScript-l\u00f8sninger for \u00e5 levere responsive bilder. Dette er en popul\u00e6r m\u00e5te \u00e5 gj\u00f8re det p\u00e5, men det legger til et nytt lag med kompleksitet. Dessuten, siden JavaScript blokkerer DOM-konstruksjon, har enhver l\u00f8sning som involverer JavaScript potensial til \u00e5 holde opp gjengivelsen. S\u00e5 selv om det er noen veldig smarte plugins der ute, bare ved \u00e5 introdusere JavaScript i ligningen, resignerer du til en viss grad med det minste av to onder.\n<\/p>\n<p>\n  Inntil nylig var dette de eneste alternativene.\n<\/p>\n<p>\n  N\u00e5 bringer imidlertid og- <code>&lt;source \/&gt;<\/code>elementene, og attributtene srcset og st\u00f8rrelser, endelig virkelig responsive bilder til nettet. Den nye spesifikasjonen begynner ogs\u00e5 \u00e5 f\u00e5 nettleserst\u00f8tte, med full st\u00f8tte i Chrome og Opera, og st\u00f8tte for oppl\u00f8sningsbytte i Safari. Inntil andre nettlesere fanger opp, finnes det en utmerket JavaScript- <a href=\"https:\/\/scottjehl.github.io\/picturefill\/\" target=\"_blank\" rel=\"noopener\">polyfill<\/a>.\n<\/p>\n<p>\n  I denne modige nye verdenen kan du bruke srcset til \u00e5 sette opp en liste over kandidatbilder som nettleseren kan velge mellom. Du kan deretter bruke en mediesp\u00f8rring i st\u00f8rrelsesattributtet for \u00e5 diktere st\u00f8rrelsen bildet skal vises med. Ved \u00e5 bruke elementet sammen med mediesp\u00f8rringer inne i ett eller flere elementer, kan du spesifisere et annet utvalg av bilder for forskjellige forhold (f.eks. for visningsporter opp til en viss bredde, bruk bilde a, b eller c, og for st\u00f8rre visningsporter, bruk bilde x, y eller z). Dette er nyttig hvis du trenger \u00e5 levere en besk\u00e5ret versjon av et bilde for brukere med sm\u00e5 skjermer.\n<\/p>\n<p>\n  Den n\u00f8yaktige detaljen om hvordan du bruker den nye syntaksen er utenfor rammen av denne artikkelen, men du kan finne en utmerket oppl\u00e6ring p\u00e5 <a href=\"http:\/\/alistapart.com\/article\/responsive-images-in-practice\" target=\"_blank\" rel=\"noopener\">alistapart<\/a>.\n<\/p>\n<p>\n  Den eneste ulempen med denne nye spesifikasjonen er kanskje at den er ganske langdrakt, noe som kan bety oppbl\u00e5st HTML p\u00e5 sider med mange bilder. Imidlertid er fordelene langt st\u00f8rre enn ulempene.\n<\/p>\n<h5>\n  Laster CSS du ikke (n\u00f8dvendigvis) trenger<br \/>\n<\/h5>\n<p>\n  Selv om mediesp\u00f8rringer lar deg bruke forskjellige CSS-regler avhengig av kriteriene du har satt, er det ingen vei utenom det faktum at sluttbrukere m\u00e5 laste ned all CSS som kan gjelde. Dette gjelder selv om du legger CSS-en din i separate filer og plasserer mediesp\u00f8rringen din i elementet\n<\/p>\n<link \/>.\n<p>\n  For eksempel vil begge de f\u00f8lgende stilarkene lastes, uavhengig av visningsportens bredde:\n<\/p>\n<link rel=\"stylesheet\" media=\"(max-width: 600px)\" href=\"css\/style1.css\" \/>\n<pre>\n<\/pre>\n<link rel=\"stylesheet\" media=\"(min-width: 601px)\" href=\"css\/style2.css\" \/>\n<p>\n  <code>Dette er ikke en nettleserfeil. Kriteriene som brukes i medies\u00f8k relaterer seg ofte til ting som endres under et bes\u00f8k p\u00e5 en side. For eksempel kan en bes\u00f8kende bestemme seg for \u00e5 endre st\u00f8rrelse p\u00e5 nettleservinduet eller rotere nettbrettet\/mobilenheten. Den resulterende endringen i visningen skal v\u00e6re s\u00f8ml\u00f8s, og \u00e5 avfyre \u200b\u200ben foresp\u00f8rsel om en annen CSS-fil ville v\u00e6re langt fra ideelt. Dette gjelder spesielt for mobile enheter, som ser ut til \u00e5 lukke radioforbindelser s\u00e5 tidlig som mulig for \u00e5 bevare batteristr\u00f8mmen. Potensielt \u00e5 m\u00e5tte reetablere den koblingen n\u00e5r visningsportst\u00f8rrelsen endres, kan v\u00e6re d\u00e5rlige nyheter for batterilevetiden.<\/code>\n<\/p>\n<p>\n  <code>Chrome gj\u00f8r imidlertid en innsats for \u00e5 h\u00e5ndtere disse forskjellige filene p\u00e5 en intelligent m\u00e5te. Mens alle filene vil bli lastet ned, vil bare den med det aktuelle medies\u00f8ket blokkere gjengivelsen. Eventuelle andre vil lastes med lavere prioritet.<\/code>\n<\/p>\n<p>\n  <code>Dessverre er ikke andre nettlesere fullt s\u00e5 forpliktende. I Firefox, for eksempel, blokkerer ubrukte CSS-filer ikke bare gjengivelse \u2013 de blokkerer ogs\u00e5 lasting av andre objekter p\u00e5 siden.<\/code>\n<\/p>\n<p>\n  <code>Fossdiagrammet nedenfor illustrerer poenget. Bildene p\u00e5 denne siden begynner ikke \u00e5 lastes f\u00f8r den ubrukte CSS-filen er lastet ned fullstendig:<\/code>\n<\/p>\n<p>\n  <code>Du kan omg\u00e5 dette ved \u00e5 bruke JavaScript for \u00e5 laste CSS betinget, men som vi allerede har sett, har JavaScript sine egne ytelseskostnader.<\/code>\n<\/p>\n<h5>\n  <code>Hva betyr alt dette for ytelsen til et responsivt nettsted versus et mobilnettsted?<\/code><br \/>\n<\/h5>\n<p>\n  <code>Vel, mobilbrukere og desktop-brukere p\u00e5 et responsivt nettsted m\u00e5 laste ned samme CSS.<\/code>\n<\/p>\n<p>\n  <code>Og det kommer til \u00e5 v\u00e6re mer av det enn det ville v\u00e6rt p\u00e5 et nettsted designet bare for datamaskin eller mobil.<\/code>\n<\/p>\n<p>\n  <code>Dessuten er det mer sannsynlig at et dedikert mobilnettsted bruker en lettere, nedstrippet versjon av stasjon\u00e6r CSS (selv om dette kanskje er mindre sant n\u00e5, ettersom brukere vokser til \u00e5 forvente en rikere opplevelse p\u00e5 stadig mer sofistikerte mobilskjermer).<\/code>\n<\/p>\n<p>\n  <code>S\u00e5 andre ting er like, det ser ut som om det er noe i argumentet om at en respons sannsynligvis vil v\u00e6re tregere enn en mobilside p\u00e5 grunn av den ekstra CSS som kreves. Men s\u00e5 lenge designere er klar over de potensielle fallgruvene, b\u00f8r de v\u00e6re i stand til \u00e5 lage hurtiglastende stilark for et responsivt nettsted. Spesielt er det en god id\u00e9 \u00e5:<\/code>\n<\/p>\n<ul>\n<li>\n    <code>unng\u00e5 \u00e5 bruke data-URIer for bilder \u2013 bin\u00e6re bakgrunnsbilder vil (normalt) bare lastes inn hvis\/n\u00e5r de er n\u00f8dvendig, men alle data-URIer vil bli lastet uansett.<\/code>\n  <\/li>\n<li>\n    <code>hold det lett \u2013 siden all CSS m\u00e5 lastes ned, er det viktig \u00e5 v\u00e6re effektiv. Dette betyr \u00e5 unng\u00e5 duplisering og s\u00f8rge for at globale regler settes utenfor den medies\u00f8k-drevne CSS-en.<\/code>\n  <\/li>\n<\/ul>\n<h5>\n  <code>RESS (responsiv webdesign + serversidekomponenter)<\/code><br \/>\n<\/h5>\n<p>\n  <code>RESS er en hybrid mellom responsiv og adaptiv design, som inneb\u00e6rer at brukeragent snuser p\u00e5 serveren for \u00e5 se p\u00e5 egenskapene til klientenheten og levere innhold som passer til den.<\/code>\n<\/p>\n<p>\n  <code>Hvis en av innvendingene mot responsiv design er at det inneb\u00e6rer \u00e5 levere alt innhold til alle enheter, hvorfor ikke redusere dette ved \u00e5 kutte ut noe av innholdet der du kan?<\/code>\n<\/p>\n<p>\n  <code>Dette kan gi mye mening. Hvis det er et bilde du vet at du aldri vil vise p\u00e5 enheter hvis skjerm er under en viss st\u00f8rrelse, kan du like gjerne ikke sende det til disse enhetene, noe som sparer b\u00e5ndbredde og reduserer lastetiden.<\/code>\n<\/p>\n<p>\n  <code>Dessuten, hvis du bruker mediesp\u00f8rringer som du vet umulig kan tilfredsstilles p\u00e5 visse enheter, er det i det minste et argument for \u00e5 dele CSS-en din i forskjellige filer og laste dem betinget.<\/code>\n<\/p>\n<p>\n  <code>Det er verdt \u00e5 huske p\u00e5 at hele denne prosessen ikke er \"gratis\" n\u00e5r det gjelder ytelse. Noe arbeid m\u00e5 \u00e5penbart utf\u00f8res p\u00e5 serveren, noe som tar tid \u2013 sannsynligvis ikke nok til \u00e5 oppveie fordelene, men det er noe \u00e5 v\u00e6re klar over.<\/code>\n<\/p>\n<h5>\n  <code>Dommen<\/code><br \/>\n<\/h5>\n<p>\n  <code>Er responsive nettsteder trege?<\/code>\n<\/p>\n<p>\n  <code>Det kommer an p\u00e5 hva du mener med sakte.<\/code>\n<\/p>\n<p>\n  <code>Er det sannsynlig at det raskeste responsive nettstedet du kan lage er tregere enn det raskeste dedikerte mobilnettstedet du kan lage?<\/code>\n<\/p>\n<p>\n  <code>Sannsynligvis.<\/code>\n<\/p>\n<p>\n  <code>Vi har ogs\u00e5 sett at det er noen fallgruver. Hvis du ikke er forsiktig, er det lett \u00e5 ende opp med \u00e5 tvinge brukere til \u00e5 laste ned mange overfl\u00f8dige bilder og CSS, noe som gj\u00f8r det responsive nettstedet ditt mye tregere enn det trenger \u00e5 v\u00e6re.<\/code>\n<\/p>\n<p>\n  <code>Det trenger imidlertid ikke v\u00e6re slik. Det er fullt mulig \u00e5 lage et responsivt nettsted som er like raskt som det trenger \u00e5 v\u00e6re og som gir en utmerket brukeropplevelse. Og etter hvert som b\u00e5de standarder og nettlesere begynner \u00e5 fange opp med hva utviklerne \u00f8nsker \u00e5 levere, b\u00f8r det begynne \u00e5 bli enklere.<\/code>\n<\/p>\n<p>\n  <code>&lt;\/p&gt;\n&lt;p&gt;<\/code>\n<\/p>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\n  <code>Opptakskilde: &lt;a target=\"_blank\" rel=\"noopener nofollow\" data-pssr=\"\" href=\"http:\/\/www.instantshift.com\/2015\/09\/07\/making-responsive-websites-perform\/\"&gt;instantshift.com&lt;\/a&gt;<\/code>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Det var en tid da du trygt kunne skille mellom en stasjon\u00e6r nettside og en mobil nettside. Faktisk s\u00e5 mye at en hel bransje vokste opp rundt \u00e5 gjenbruke skrivebordssider for mobil. En stund var du ingen hvis du ikke hadde en egen mobilside p\u00e5 et eget domene. S\u00e5 begynte ting \u00e5 endre seg. Mobilskjermer er forbedret til det ugjenkjennelige. Det samme gjorde mobilnettlesere. Nettbrett kastet et annet element inn i ligningen. 4G kom med. Retina-skjermer tilb\u00f8d nye niv\u00e5er av klarhet for sluttbrukere. Plutselig s\u00e5 grensen mellom desktop og mobil uklar ut. \u2026<\/p>\n","protected":false},"author":1,"featured_media":222114,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[57,200],"tags":[],"class_list":["post-257320","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-og-wordpress","category-webdesign-2"],"_links":{"self":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/posts\/257320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/comments?post=257320"}],"version-history":[{"count":0,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/posts\/257320\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/media\/222114"}],"wp:attachment":[{"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/media?parent=257320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/categories?post=257320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.click\/no\/wp-json\/wp\/v2\/tags?post=257320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}