← Område 1 Uppgift · Så fungerar webben Felsökning

Webbutveckling 1 · område 1 · projekt

Så fungerar webben

Din första webbplats. En sida som förklarar vad som händer när någon skriver en adress och trycker enter – i fyra steg, med dina egna ord. Vi bygger den tillsammans på fyra lektioner och publicerar den på den femte.

1. Uppdraget

Du ska bygga en sida som förklarar kedjan från adress till färdig sida. Sidan går igenom fyra steg, ett i taget: du skriver adressen, datorn slår upp namnet, webbläsaren frågar servern, och servern svarar. Allt du behöver veta gick vi igenom på måndagen, och det står i faktabladet Från adress till sida.

Du sitter inte och tittar på när jag kodar. Du skriver samma sak som jag, samtidigt, i ditt eget repo. Sista lektionen publiceras sidan med GitHub Pages och blir din första publika webbplats.

Skriv så att någon som går i nian förstår. Den personen har aldrig hört ordet DNS.

Så bedöms den

Det här projektet bedöms som deltagande och färdigställande – det sätter inget betyg i egen rätt. Kraven är ändå indelade i tre nivåer, så att du vet vad skillnaden mellan E, C och A innebär innan det räknas. Projekt 1 startar den 7 september, och då gör det det.

2. Kraven

Kryssa av allt eftersom. Kryssen sparas i din webbläsare.

Ska-krav — nivå E

Bör-krav — mot nivå C

Utmaning — mot nivå A

Kryssen sparas i din webbläsare.

3. Tekniska krav

VadSå ska det vara
Filnamnindex.html, gemener, inga mellanslag
PlatsRepots rot. Byt inte namn på filen
BilderI mappen bilder/, gemener och bindestreck i filnamnen
Stilmallstil.css i repots rot, bredvid index.html
SökvägarRelativa: bilder/dns.png, stil.css
Indrag2 mellanslag
SpråkSvenska. lang="sv" ska stå kvar
Alt-textAlla bilder har alt

4. Så bygger vi den

DatumVad vi gör
tis 25/8Struktur. Dokumentets grund, fyra block, rubriker och din egen text
fre 28/8Innehåll. Bilder, listor och länkar
mån 31/8Form. Färg, typsnitt och avstånd
tis 1/9Färdigställ. Sista delarna, eget arbete med handledning
fre 4/9Publicering. GitHub Pages. Inlämning 23:59

Hinner du inte klart på en lektion är det ingen katastrof. Nästa pass börjar med tid för att komma ikapp, och du kan alltid jobba vidare hemma – ditt Codespace finns kvar.

5. Tisdagens steg

Det här skriver vi tillsammans på tisdagen. Har du varit borta, eller vill du läsa igen efteråt, står allt här.

Först: öppna ditt Codespace från listan under Code → Codespaces. Skapa inget nytt – klicka på det som redan finns. Öppna index.html och ta bort rubriken du skrev i fredags.

Sedan skelettet. Tre block som beskriver vad delarna är: toppen, det viktiga innehållet, och foten.

<body>

  <header>
    <h1>Så fungerar webben</h1>
  </header>

  <main>
  </main>

  <footer>
  </footer>

</body>

Sedan fyra avsnitt inuti main, ett per steg i kedjan. Så här ser det första ut:

    <section>
      <h2>1. Du skriver adressen</h2>
    </section>

De tre andra rubrikerna är 2. Datorn slår upp namnet, 3. Webbläsaren frågar servern och 4. Servern svarar. Numren och ordningen ska vara kvar – formuleringen får du äga.

Sist texten. Under varje h2 lägger du ett stycke med p:

    <section>
      <h2>1. Du skriver adressen</h2>
      <p>Adressen består av flera delar. Protokollet säger vilka regler
        som gäller, domännamnet är namnet någon har registrerat, och
        sökvägen pekar ut var dokumentet ligger på servern.</p>
    </section>
Två till fyra meningar per steg – dina egna ord

Det här är det enda i uppgiften som skiljer ett E från ett C. Den som skriver av faktabladet ordagrant får ett E. Den som förklarar med egna ord och lägger till ett exempel närmar sig C. Att slå upp är inte fusk. Att kopiera är det.

Innan du går: spara med Ctrl + S, gå till Source Control, klicka + på filen, skriv La till struktur och rubriker, klicka Commit och sedan Sync Changes. Ladda om repot på github.com och se att ändringen syns.

6. Fredagens steg

Det här skriver vi tillsammans på fredagen. Passet börjar med en kvart där du skriver klart texten från tisdagen – hann du inte alla fyra styckena är det nu du gör det.

Först en mapp för bilderna. I filträdet till vänster, klicka New Folder och döp mappen till bilder. Gemener, ingen versal, inga mellanslag.

Sedan bilden. Dra in bildfilen från skrivbordet till mappen bilder. Fungerar inte drag-and-drop: högerklicka på mappen och välj Upload. Filnamnet ska vara gemener med bindestreck i stället för mellanslag, till exempel dns.png eller fran-adress-till-sida.png.

Nu bilden i koden, inuti det section där den hör hemma:

    <section>
      <h2>2. Datorn slår upp namnet</h2>
      <p>...</p>
      <img src="bilder/dns.png" alt="Datorn frågar en DNS-server efter
        numret till adressen och får tillbaka en IP-adress.">
    </section>

img stängs inte – det finns inget </img>. Allt elementet behöver står i attributen. src är sökvägen: bilder/dns.png betyder mappen bilder, som ligger bredvid den här filen, och filen dns.png i den. alt beskriver vad bilden visar, för den som inte kan se den.

Bilden blir enorm – det är rätt

Utan CSS visas bilden i sin egen storlek, och det kan vara halva skärmen. Leta inte efter något att skriva för att krympa den. Storleken fixar vi på måndagen.

Sedan en lista. Adressens delar är tre stycken, och tre saker i rad är en lista snarare än en mening. Den hör hemma i steg 1:

      <ul>
        <li>Protokollet – https, reglerna för hur frågan ställs</li>
        <li>Domännamnet – namnet någon har registrerat</li>
        <li>Sökvägen – var på servern dokumentet ligger</li>
      </ul>

ul är listan, li är en rad i den, och raderna ligger inuti listan. ul ger punkter, ol ger nummer – ordningen är det enda som skiljer dem. En lista räcker. Blir alla fyra stegen punktlistor finns det ingen text kvar att läsa.

Sist en länk ut från sidan. Steg 4 handlar om statuskoder, så länken hör hemma där:

      <p>Vill du se alla statuskoder finns de listade hos
        <a href="https://developer.mozilla.org/sv/docs/Web/HTTP/Status">MDN</a>.</p>

href är dit länken går, texten mellan taggarna är det du klickar på. https:// måste stå med när länken går ut från din egen sida – skriver du bara developer.mozilla.org letar webbläsaren efter en mapp med det namnet i ditt eget repo, och du får 404. Skriv en länktext som säger vart länken går. MDN fungerar, klicka här gör det inte: den som får sidan uppläst hör bara klicka här och vet inte vad som väntar.

Är bilden någon annans, skriv var du hittade den i sidfoten:

    <footer>
      <p>Av Ditt Namn, Webbutveckling 1, 2026</p>
      <p>Bild: <a href="https://commons.wikimedia.org/">Wikimedia Commons</a></p>
    </footer>
Bildfilen måste committas den också

Bilden är en ny fil, inte en ändring i index.html. Lägger du bara till index.html i Source Control fungerar sidan i ditt Codespace men bilden blir trasig på GitHub – och det upptäcker du först på inlämningsdagen. Klicka + på båda raderna, eller på rubriken Changes som tar allt.

Innan du går: spara, gå till Source Control, lägg till både index.html och bildfilen, skriv La till bild, lista och länk, klicka Commit och Sync Changes. Ladda sedan om ditt repo på github.com och leta efter mappen bilder. Syns den inte är bilden inte uppe.

7. Måndagens steg

Det här skriver vi tillsammans på måndagen. Innehållet är klart – nu får sidan form. Inte för att bli snygg, utan för att gå att läsa.

Formen bor i en egen fil. index.html säger vad sidan innehåller, stil.css säger hur det ska se ut. De hålls isär, och det gör de genom hela kursen.

Först filen. I filträdet, New File, namnet stil.css. Den ska ligga bredvid index.html, inte i bilder.

Sedan kopplingen, i head:

    <link rel="stylesheet" href="stil.css">

href är en sökväg, precis som src var för bilden. stil.css betyder filen som heter så, bredvid den här. link stängs inte, lika lite som img. Och den ligger i head, inte i body.

Sedan en regel som bevisar att det sitter ihop. Skriv den i stil.css:

body {
  background: #ffe08a;
}

Spara. Blir sidan gul sitter kopplingen, och resten är innehållet i filen. Blir den inte gul är det ett av tre fel: filen heter något annat, link-raden ligger i body, eller sökvägen är felstavad. Leta i den ordningen.

Orden du behöver

I regeln ovan är body selektorn – vad regeln gäller. background är egenskapen. #ffe08a är värdet. Kolon mellan egenskap och värde, semikolon efter, klamrar runt.

Sedan färg och typsnitt. Byt ut den gula bakgrunden och bygg ut regeln:

body {
  font-family: system-ui, sans-serif;
  color: #1c1c1c;
  background: #fdfdfb;
}

font-family har flera värden med komma emellan – webbläsaren tar det första som finns på datorn. color är textens färg, background är bakgrunden. Färger skrivs som # och sex tecken, eller med engelska namn som black. Inte svart.

Rubrikerna får en egen regel, och färgen väljer du själv:

h1, h2 {
  color: #14506b;
  line-height: 1.2;
}

Kommatecknet i selektorn betyder och. Regeln gäller båda.

Sedan luft och läsbredd, det som faktiskt gör sidan läsbar. Raderna läggs till i den body-regel du redan har – inte i en ny:

  max-width: 40rem;
  margin: 0 auto;
  padding: 1rem;
  line-height: 1.6;

max-width sätter en gräns för hur bred texten får bli. Utan den blir raderna så långa att ögat tappar bort vilken rad det var på. margin: 0 auto centrerar innehållet. line-height är avståndet mellan raderna. padding är luft på insidan, så att texten inte klistrar sig mot kanten på mobil.

Och avstånd mellan stegen, så att man ser var ett slutar:

section {
  margin-bottom: 2.5rem;
}

Sist får bilden en storlek. Den har legat i sin egen storlek sedan fredag:

img {
  max-width: 100%;
}

100 % av utrymmet den har att breda ut sig på. Är bilden mindre än så lämnas den i fred – max-width sätter ett tak, inte en storlek.

stil.css måste committas den också

Samma fälla som med bildfilen. stil.css är en ny fil, inte en ändring i index.html. Klicka + på rubriken Changes, som tar allt. Ladda sedan om ditt repo på github.com och se att stil.css ligger i listan.

Innan du går: spara, lägg till båda filerna i Source Control, skriv La till stilmall, klicka Commit och Sync Changes.

8. Innan du lämnar in

Tisdag 1 september är sista passet innan publiceringen, och det är eget arbete med handledning. Ingen ny kod gås igenom – du bygger klart, och jag går runt.

Börja med att skriva ner vad du saknar. På ett papper, inte i huvudet. Gå igenom listan nedan och skriv upp det som inte är gjort. Den som skriver ner tre saker gör tre saker.

Texten går före allt annat

Saknar du text under en rubrik är det den du fixar först. En trasig bild eller en stilmall som inte sitter går att laga på fredagen – tomrum under en rubrik gör det inte, för fredagen går åt till att publicera.

Ordningen att ta det i, om du saknar flera saker:

  1. Egen text under alla fyra rubrikerna, två till fyra meningar per steg.
  2. Stilmallen: heter filen stil.css, ligger link-raden i head, stämmer sökvägen?
  3. Bilden: rätt sökväg, gemener i filnamnet, en alt som beskriver vad den visar.
  4. Listan och länken ut från sidan.
  5. Allt committat och synkat.

Sist: kontrollera i ditt repo på github.com. Tre saker ska synas i filträdet:

bilder/
index.html
stil.css

Fattas något är det inte committat. Då finns det inte på webben heller, hur bra det än ser ut i ditt Codespace – och på fredag publicerar vi det som ligger på GitHub, inte det som ligger hos dig.

Bygg klart, bygg inte om

Tycker du att sidan är ful är det inte ett skäl att börja om. Formen bedöms mot kraven i listan ovan, inte mot smak, och det finns inte tid för en ny sida före fredag. Är du klar med ska-kraven – ta bör-kraven i stället.

9. Så lämnar du in

Det här gör vi tillsammans på fredagen 4 september. Deadline är samma kväll 23:59, så hinner du inte klart på lektionen gör du klart hemma – men den som går från lektionen med en fungerande adress slipper göra det.

Först: allt måste ligga på GitHub. Pages publicerar det som finns i repot, ingenting annat. Öppna ditt repo på github.com och kontrollera att index.html, stil.css och mappen bilder syns i listan.

Sedan slår du på GitHub Pages. På ditt repo, inte på ditt konto:

  1. Settings uppe till höger.
  2. Pages i vänsterspalten.
  3. Under Source: Deploy from a branch.
  4. Under Branch: main, och mappen står kvar på / (root).
  5. Save.

Nu bygger GitHub din sida, och det tar ungefär en minut. Ladda om Settings → Pages tills adressen står överst. Den ser ut så här:

https://ANVÄNDARNAMN.github.io/REPONAMN/
Får du 404 direkt – vänta en minut

Den första 404:an betyder nästan alltid att bygget inte hunnit klart. Vänta, ladda om, och först därefter börja felsöka.

Öppna din adress och kontrollera tre saker, i den här ordningen:

  1. Kommer sidan upp?
  2. Syns bilden?
  3. Ser sidan stilad ut – färg, typsnitt och luft?
Sökvägar som fungerar hos dig men inte på webben

Det här är det vanligaste felet vid publicering, och det syns inte förrän sidan är live. GitHubs server skiljer på stora och små bokstäver – din egen dator gör oftast inte det.

<img src="Bilder/DNS.png" alt="…">   ← 404 på webben
<img src="bilder/dns.png" alt="…">   ← fungerar överallt

Det andra vanliga felet är ett snedstreck först i sökvägen:

<link rel="stylesheet" href="/stil.css">   ← fel
<link rel="stylesheet" href="stil.css">    ← rätt

Ett inledande snedstreck betyder börja om från serverns rot. Din sida ligger under användarnamn.github.io/reponamn/, så snedstrecket hoppar över reponamnet och letar på fel ställe.

Varje rättning tar samma väg: ändra i Codespace, committa, synka, vänta en minut, ladda om.

Repot måste vara publikt

Är repot privat publicerar Pages ingenting alls – då finns sidan inte, hur rätt koden än är. Kontrollera att det står Public under repots namn. Gör det inte det: Settings → General → längst ned → Change repository visibility → Make public.

Testa sedan din adress i ett privat fönster, där du inte är inloggad. Syns sidan där syns den för alla.

Sist lämnar du in länken i itslearning. Det är repots adress som ska in, inte sajtens:

https://github.com/ANVÄNDARNAMN/REPONAMN

Rättningen tittar på koden, inte bara på hur sidan ser ut – och sajten når man själv därifrån.

Publicerad är inte inlämnad

En sida som ligger uppe men aldrig lämnades in räknas inte. Klicka Lämna in i itslearning-uppgiften innan du går, även om du tänker fixa något mer på kvällen.

10. Felsökning

24 rader

SymptomTrolig orsakÅtgärd
Rubriken syns inte på sidanDen hamnade i <head> i stället för <header>head är information om sidan, header är sidans topp. Flytta rubriken
Resten av sidan hamnar inuti ett blockEn tagg är inte stängdLeta efter snedstrecket. Varje öppnad tagg har en </tagg>
Åäö blev frågeteckenRaderna i <head> är borttagnaÅngra med Ctrl + Z. De raderna ska stå kvar
Inget händer när jag laddar omFilen är inte sparadCtrl + S. En prick i flikens namn betyder osparat
Mitt arbete från förra lektionen är bortaDu skapade ett nytt CodespaceÖppna det som redan finns i listan under Code → Codespaces
Ändringen syns inte på github.comDu committade men synkade inteKlicka Sync Changes i Source Control
VS Code vägrar committaCommit-meddelandet är tomtSkriv vad du ändrade i rutan ovanför knappen
Min länk ger 404 för lärarenRepot är privatSettings → General → längst ned → Change repository visibility → Make public
Bilden visas som en trasig ikonsrc pekar inte på något som finnsJämför sökvägen i koden med filträdet, tecken för tecken. Ligger filen verkligen i bilder/?
Bilden syns i Codespace men är trasig på GitHubBildfilen är inte committadBildfilen är en egen fil. Lägg till den i Source Control också, committa och synka
Bilden funkar för mig men inte för andraVersal eller mellanslag i filnamnetDöp om filen till gemener med bindestreck, och ändra src så att det stämmer
Bilden täcker halva skärmenIngenting – sidan har ingen CSS änLåt den vara. Storleken sätts på måndagens lektion
Min externa länk ger 404 i mitt eget repohttps:// saknas i hrefUt från sidan kräver hela adressen: https://example.se
Stilmallen gör ingenting allslink-raden ligger i body, eller sökvägen är felRaden hör hemma i head. Kontrollera att filnamnet stämmer tecken för tecken
En regel fungerar, nästa gör det inteSemikolon saknas efter värdet innanSemikolon efter varje värde. Felet syns på nästa rad, inte på den trasiga
Allt efter en viss regel slutar gällaEn klammer är inte stängdRäkna klamrarna. Varje { har en }
Sidan är stilad hos mig men ostilad på GitHubstil.css är inte committadNy fil. Lägg till den i Source Control, committa och synka
Min CSS syns som text på sidanDen är skriven i index.html i stället för i stil.cssKlipp ut den och lägg den i stil.css. HTML säger vad, CSS säger hur
404 direkt efter att jag slog på PagesBygget är inte klartVänta en minut och ladda om. Först därefter felsöker du
Bilden syns hos mig men inte på den publika adressenVersal i mapp- eller filnamnetServern skiljer på stort och smått. Döp om till gemener och ändra src
Bild och stilmall försvinner samtidigt liveSnedstreck först i sökvägenTa bort det inledande /. Sökvägen utgår från filen, inte från servern
Jag hittar inte Pages i SettingsDu står på fel repo, eller på organisationens inställningarGå in på ditt eget repo först, och välj Settings där
Min ändring syns inte på den publika sidanInte synkad, eller webbläsaren visar en sparad versionSync Changes, vänta en minut, ladda om med Ctrl + F5
Läraren säger att inlämningen är tomSidan är publicerad men uppgiften aldrig inlämnadKlicka Lämna in i itslearning. Publicerad är inte inlämnad