← Område 8 Repetition · Slutprojekt Ordlista

Webbutveckling 1 · område 8 · inför pass 76 och slutprovet

Repetition: kursen på en sida

Kursen område för område: det viktigaste, frågor att pröva dig själv på, och var i guiden du läser vidare.

Åtta veckor har gått sedan pass 75, och det mesta du ska kunna lärde du dig i höstas. Sidan samlar kursen område för område: det viktigaste, frågor att pröva dig själv på, och var i guiden du läser vidare. Den ersätter inte guiderna – den visar var du behöver dem.

Så använder du sidan

Inför pass 76. Passet börjar med ett quiz i lag över hela kursen, med frågor av samma slag som under Testa dig själv. Läs Det viktigaste för varje område innan.

Inför slutprovet. Provet skrivs utan dator och täcker hela kursen. Det bygger på ett anonymiserat slutprojekt från klassen och har också frågor om juridik, etik och säkerhet från område 5. Du kommer att läsa kod på papper, hitta fel och skriva kod för hand.

Arbeta ett område i taget:

  1. Läs det viktigaste. Stryk under det du inte känner igen.
  2. Testa dig själv. Täck över svaret, svara på papper och jämför sedan.
  3. Gå till guiden där det tar stopp. Under Läs mer står vilka avsnitt som hör till frågorna. Läs avsnittet, inte hela guiden.

Avsnitt 1–7 följer kursens områden. Avsnitt 8 visar hur de hänger ihop, och 9 är en ordlista med kursens viktigaste ord.

1. Igång med webben

Det viktigaste

Testa dig själv

1. Du har ändrat i index.html, skrivit ett meddelande och klickat på Commit. Ändringen syns ändå inte på github.com. Vad har du glömt?

Visa svaret

Att klicka Sync Changes. Commiten ligger bara i ditt Codespace tills den skickats upp med en push.

2. Vad är skillnaden mellan internet och webben?

Visa svaret

Internet är näten och kablarna som datorer pratar över. Webben är sidorna och länkarna som åker på internet – en tjänst bland flera.

3. Titta på adressen https://www.example.se/kurser/index.html?niva=1#krav. Vilken del skickas aldrig till servern, och vad heter den?

Visa svaret

#krav, fragmentet. Det pekar ut en plats på sidan, och det är webbläsaren som scrollar dit.

4. Du skriver fel i adressen till en av dina egna sidor och får 404. En klasskamrat får 500 på en helt annan sajt. Vems fel är det i de två fallen?

Visa svaret

404 är ditt: servern svarade men hittade ingen sådan sida, oftast en felstavad sökväg eller en fil som saknas. 500 är serverns fel, och där kan du inte göra något.

Läs mer

2. HTML: innehåll och struktur

Det viktigaste

Testa dig själv

1. Vad är fel i den här koden?

<ul>
  <li>Du får plocka bär och matsvamp.</li>
  <p>Hundar ska vara kopplade.</p>
  <li>Du får inte göra upp eld.</li>
</ul>
Visa svaret

Ett p ligger direkt i ul. Bara li får ligga där. Gör stycket till ett li, eller lägg det inuti ett.

2. Vad är skillnaden mellan title och h1?

Visa svaret

title står i head och syns i fliken, i bokmärken och i sökresultat. h1 står i body och är rubriken på själva sidan.

3. En sida om fåglar har ett avsnitt "Fåglar" med en text om tranan och en om fiskgjusen. Vilket element får avsnittet, och vilket får varje art?

Visa svaret

Avsnittet blir section och varje art article. Texten om tranan går att lyfta ut och förstå för sig själv. Avsnittet, som bara samlar artiklarna, gör det inte.

4. Varför ska den första cellen i varje rad vara <th scope="row"> och inte td?

Visa svaret

Då vet skärmläsaren att cellen är rubrik för raden. Den kan läsa upp "Strandleden, Längd, 4,1 km" i stället för bara "4,1 km".

Läs mer

HTML-guiden: avsnitt 1 Dokumentets grund, 3 Semantiska element, 5 Länkar och sökvägar, 6 Bilder, 8 Tabeller, 9 Formulär och 10 Validering och webbläsartest. Felsökningstabellen i avsnitt 12 är bra att läsa inför provets hitta felet-frågor.

3. CSS: form, layout och designsystem

Det viktigaste

Testa dig själv

1. Texten i ingressen får varken rätt färg eller rätt storlek. Vad är fel?

.ingress {
  color: var(--dov)
  font-size: 1.25rem;
}
Visa svaret

Semikolon saknas efter var(--dov). De två raderna läses då som en enda trasig deklaration, och felet märks på raden efter den som saknar semikolon.

2. Stilmallen har .kortrutnat p { max-width: none; } högt upp och p { max-width: 34rem; } längre ned. Vilken gäller för ett stycke i kortrutnätet?

Visa svaret

.kortrutnat p. Den har specificiteten 0-1-1 mot 0-0-1, och specificiteten avgörs innan ordningen i filen spelar någon roll.

3. Ett element har width: 300px, padding: 20px och border: 1px solid. Hur brett blir det utan box-sizing: border-box, och hur brett med?

Visa svaret

Utan: 342 pixlar, eftersom padding och border läggs utanpå. Med: 300 pixlar.

4. Du ska bygga en meny som radbryter och ett galleri med kort. Flexbox eller Grid, och varför?

Visa svaret

Menyn i Flexbox, eftersom den ligger i en riktning. Galleriet i Grid med auto-fit, eftersom korten ska ligga i linje åt två håll.

Läs mer

CSS-guiden: avsnitt 2 Selektorer, 3 Kaskaden, specificitet och arv, 5 Boxmodellen, 7 Typografi och enheter, 8 Flexbox, 9 Grid och 10 CSS-variabler och designsystem.

4. UX, design och mobilanpassning

Det viktigaste

Testa dig själv

1. Hopplänken ska synas när den får fokus, men den går inte att nå med Tab. Vad är fel?

.hoppa {
  display: none;
}

.hoppa:focus {
  display: block;
}
Visa svaret

display: none tar bort länken ur tabbordningen, så den kan aldrig få fokus. Göm den i stället ovanför skärmkanten med position: absolute och top: -4rem, och sätt top: 0 vid :focus.

2. Varför ska en brytpunkt skrivas @media (min-width: 40rem) och inte med px?

Visa svaret

En brytpunkt i rem flyttar sig när besökaren förstorar texten. Den som läser med större text får desktoplayouten senare, när texten faktiskt får plats.

3. Vilken av de här tre behöver en media query: en meny som ska radbryta, ett kortrutnät som ska få färre kolumner, eller en sidospalt som ska komma till på bred skärm?

Visa svaret

Sidospalten. Menyn klarar sig med flex-wrap: wrap och rutnätet med repeat(auto-fit, minmax(16rem, 1fr)), men Grid kan inte veta när det finns plats för en spalt till.

4. Vilka tre saker kontrollerar du när du tangentbordstestar en sida?

Visa svaret

Att du ser var fokus är, att ordningen följer läsordningen, och att du når allt som är klickbart.

Läs mer

Designguiden: avsnitt 1 Viewport-taggen och mobile first, 2 Relativa enheter, 3 Media queries, 4 och 6 om wireframen och vägen till kod, 7–8 om hierarki och klickbarhet, samt 10–12 om tillgänglighet, tangentbord och WAVE.

5. Publicering, juridik och säkerhet

Område 5 hade inget prov – Google Sites-sajten var redovisningen. Nu kommer det tillbaka.

GDPR – det viktigaste

Upphovsrätt – det viktigaste

Säkerhet – det viktigaste

Testa dig själv

1. En förening vill skicka ett nyhetsbrev och frågar i sitt formulär efter namn, e-postadress, personnummer och skostorlek. Vilken princip bryter de mot, och hur?

Visa svaret

Uppgiftsminimeringen. För att skicka ett nyhetsbrev behövs e-postadressen, kanske namnet – aldrig personnumret eller skostorleken.

2. Din sajt ligger på GitHub Pages och har bara egen HTML och CSS. Behöver du en kakbanner? Vad ändras om du länkar in ett typsnitt från Google Fonts?

Visa svaret

Nej, en statisk sajt med egen HTML och CSS sätter inga kakor. Med Google Fonts gör varje sidvisning ett anrop till Googles servrar med besökarens IP-adress, som är en personuppgift. Det ska du veta om och kunna berätta – eller undvika genom att lägga typsnittet i repot.

3. En bild har licensen CC BY-ND 4.0. Får du beskära den och lägga den på din sajt?

Visa svaret

Du får använda den med erkännande, men inte beskära den. ND betyder inga bearbetningar – verket ska användas som det är.

4. Ett porträtt togs 1950. Fotografen dog 1960. Är bilden fri att använda 2027?

Visa svaret

Har bilden verkshöjd är den skyddad till utgången av 2030, alltså 70 år efter dödsåret, och blir fri 1 januari 2031. Saknar den verkshöjd gick skyddet ut 50 år efter att den togs. Är du osäker ska du utgå från att den har verkshöjd.

5. Vad är det för fel i koden, ur säkerhetssynpunkt?

const falt = document.querySelector("#sok");
const utskrift = document.querySelector(".sokord");
utskrift.innerHTML = falt.value;
Visa svaret

Det besökaren skriver tolkas som HTML. Då kan hen skriva in taggar och skript som körs – det kallas XSS. Använd utskrift.textContent = falt.value;.

6. Du upptäcker att en API-nyckel ligger i en fil du pushat till ditt publika repo. Du tar bort raden och committar igen. Är problemet löst?

Visa svaret

Nej. Nyckeln finns kvar i historiken. Byt ut den hos tjänsten som gav dig den, så att den läckta blir värdelös, och lägg filen med hemligheter i .gitignore.

Läs mer

6. Interaktivitet med moduler

Det viktigaste

Testa dig själv

1. Menyn öppnas direkt när sidan laddas, och sedan händer ingenting när du klickar. Vad är fel?

const knapp = document.querySelector(".menyknapp");
knapp.addEventListener("click", oppna());
Visa svaret

oppna() med parenteser anropar funktionen direkt när raden läses. Lyssnaren ska få funktionen som värde: knapp.addEventListener("click", oppna);.

2. Konsolen säger Cannot read properties of null (reading 'addEventListener') och at meny.js:48. Vilka är de två vanligaste orsakerna?

Visa svaret

Att klassnamnet i modulen inte stämmer med det i HTML:en, eller att skriptet kördes innan HTML:en var klar för att defer saknas i script-taggen.

3. Vad är skillnaden mellan querySelector och querySelectorAll?

Visa svaret

querySelector ger det första elementet som matchar, eller null. querySelectorAll ger alla som matchar, som en lista du går igenom med till exempel forEach.

4. Karusellen skriver "Bild 1 av 3" när variabeln aktuell är 0. Varför står det aktuell + 1 i koden?

Visa svaret

Index i en lista börjar på 0, men människor räknar från 1.

Läs mer

7. Optimering och diskret funktionalitet

Det viktigaste

Testa dig själv

1. Webbläsaren kan AVIF, men hämtar ändå WebP-filen. Vad är fel?

<picture>
  <source type="image/webp" srcset="bilder/mossen-800.webp">
  <source type="image/avif" srcset="bilder/mossen-800.avif">
  <img src="bilder/mossen-800.jpg" width="800" height="533"
       alt="Näckrosmossen strax före soluppgången.">
</picture>
Visa svaret

Ordningen. Webbläsaren tar första source den förstår, uppifrån och ner. AVIF ska stå först och WebP efter.

2. Med JavaScript avstängt syns karusellens knapprad, fast den har hidden i HTML:en. Stilmallen har .karusell-styr { display: flex; }. Förklara, och rätta regeln.

Visa svaret

hidden gömmer elementet med display: none i webbläsarens egen stilmall, och din regel är starkare. Skriv .karusell-styr:not([hidden]) { display: flex; }.

3. Ett formulär har novalidate i HTML:en, och ett skript sköter valideringen. Vad händer när JavaScript inte körs?

Visa svaret

Då kontrollerar ingen formuläret, och det går att skicka tomt. novalidate ska inte stå i HTML:en – skriptet sätter det själv när det vet att det kan ta över.

4. Vad betyder sizes="(min-width: 60rem) 640px, 94vw"?

Visa svaret

Är fönstret minst 60rem brett blir bilden 640 pixlar bred, annars 94 procent av fönsterbredden. Webbläsaren väljer fil ur srcset utifrån det, så talet måste stämma med bildens bredd i CSS:en.

Läs mer

8. Hur hänger det ihop?

Den första webbplatsen 1991 var bara text och länkar – ingen CSS, ingen JavaScript. Kursen har följt samma ordning, och din sajt växte i lager:

LagerOmrådeFrågan lagret svarar på
Struktur2Vad är det här?
Form3Hur ser det ut?
Anpassning och tillgänglighet4Fungerar det på alla skärmar och för alla besökare?
Interaktivitet6Vad händer när någon gör något?
Optimering7Kommer det fram fort, och håller det när något fattas?

Område 1 gav dig verktygen, och område 5 reglerna för att publicera: vems bilder, vems uppgifter, vems lösenord. Ordningen är densamma som progressive enhancement i område 7: HTML som bär innehållet, CSS som gör sidan färdig, JavaScript som förbättrar.

Slutprojektet använder allt, i samma ordning. Byggpassen följer lagren – struktur (pass 77–78), layout (79), responsivitet (80), interaktivitet (81) och optimering (82) – och sedan testning, publicering och dokumentation. Varje pass hänvisar till samma guider som står under Läs mer ovan.

9. Ordlista

Hämtad ur guidernas ordlistor. Orden används i kursen utan att förklaras om.

Ordträning

OrdBetyder
commitEn sparad punkt i historiken, med ett meddelande om vad du gjorde
pushAtt skicka dina commits upp till GitHub
statuskodNumret svaret börjar med: 200, 301, 404, 500
DNSUppslagningen som översätter ett namn till ett nummer
elementStarttagg, innehåll och sluttagg tillsammans
attributExtra information i starttaggen, som href="..."
semantikAtt elementet säger vad innehållet är, inte hur det ser ut
alt-textTexten som ersätter en bild för den som inte ser den
valideringAtt kontrollera att koden följer standarden
landmärkeEtt semantiskt block, som main eller nav, som går att hoppa till
selektorDet som säger vad regeln träffar
specificitetHur exakt en selektor är, räknad som id-klass-element
boxmodellenContent, padding, border, margin
flexboxLayout i en riktning
gridLayout i två riktningar
designsystemDe återkommande värdena, samlade och namngivna
viewportDen yta i webbläsaren där sidan visas
mobile firstGrundreglerna gäller smal skärm, media queries lägger till för breda
brytpunktBredden där en media query börjar gälla
wireframeSkiss som visar var innehållet ligger, utan färg och form
WCAGRegelverket för webbtillgänglighet
personuppgiftUppgift som går att knyta till en levande person – även bild, röst och IP-adress
rättslig grundDet lagliga skälet till en behandling. Krävs alltid
verkshöjdKravet på originalitet: verket ska vara resultatet av egna, fria val
nätfiskeMeddelanden som lurar dig att lämna ut uppgifter eller logga in på en falsk sida
DOMWebbläsarens modell av sidan, som JavaScript läser och ändrar
händelselyssnareKod som väntar på en händelse och svarar på den
deferAttribut på script som gör att koden körs när HTML:en är klar
srcsetAttribut som listar vilka filstorlekar som finns
diskretOm skript: lägger sig ovanpå en sida som redan fungerar