Webbutveckling 1 · område 2 · projekt
Projekt 1 – Flersidig ostilad webbplats
En webbplats på minst fyra sidor om ett ämne du väljer själv. Helt utan CSS, semantiskt uppbyggd och validerad utan ett enda fel. Det här projektet sätter betyg.
- 2 okt Inlämning kl 23:59 Länken till ditt nya publika repo lämnas i itslearning-uppgiften.
- 5 okt Prov 1 – kodprov HTML Skriftligt prov utan dator.
1. Uppdraget
Du ska bygga en webbplats på minst fyra sidor om ett ämne du väljer själv. Sidorna är länkade till varandra med samma navigation, och innehållet är skrivet med dina egna ord. Någonstans på sajten finns en tabell med data och ett formulär.
Sajten ska vara helt ostilad. Ingen stilmall, inga färger, inga typsnitt. Det är själva poängen med området: HTML säger vad något är, CSS säger hur det ser ut, och de två sakerna ska vara uppenbart olika innan vi slår ihop dem i område 3.
Sajten ska ge noll fel i W3C:s validator. Det blir sista steget i varje uppgift resten av kursen, och det börjar här.
Utan CSS blir bilderna enorma, tabellen en radda text och rubrikerna olika stora. Leta inte efter något att skriva för att fixa det. En sida som ser ostilad ut men har rätt element är exakt vad uppgiften ber om – och i område 3 är det den här sajten du stilsätter.
2. Ämnet
Välj något du kan skriva fyra sidor om utan att slå upp varje mening. En sport, ett spel, en plats, ett hantverk, en musikgenre, en djurgrupp. Ämnet bedöms inte – det som bedöms är strukturen, koden och att texten är din.
Två saker att undvika: ämnen där du bara kan skriva av en encyklopedi, och personer i din närhet. Ingen text, bild eller uppgift om någon annan person utan att den personen vet om det.
Sajten du bygger nu följer med resten av kursen. I område 3 stilsätter du den, i område 4 gör du den mobilanpassad, och i område 6 bygger du in interaktiva moduler i den. Välj ett ämne du står ut med till mars.
3. 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.
4. Tekniska krav
| Vad | Så ska det vara |
|---|---|
| Repo | Nytt och publikt. Namnet säger vad sajten handlar om, gemener och bindestreck |
| Startsida | index.html i repots rot |
| Filnamn | Gemener, bindestreck i stället för mellanslag, ändelsen .html |
| Bilder | I mappen bilder/, samma regler för filnamnen |
| Sökvägar | Relativa: bilder/karta.svg, kontakt.html. Aldrig inledande snedstreck |
| Indrag | 2 mellanslag |
| Språk | lang="sv" på varje sida |
| Teckenkodning | <meta charset="utf-8"> som första rad i varje head |
| CSS | Ingen alls. Ingen stilmall, inget style-element, inga style-attribut |
| JavaScript | Krävs inte, och behövs inte till något i den här uppgiften |
| Validering | validator.w3.org, noll fel på varje enskild sida |
Så här ser repot ut när du är klar. Filnamnen är dina – index.html är
det enda som måste heta som det heter:
bilder/
...
index.html
sida-2.html
sida-3.html
sida-4.html
README.md
5. Bedömningsmatris
Så här bedöms sajten, kriterium för kriterium. Matrisen är inte hemlig och den är inte till för slutet – tisdag 29 september går du igenom din egen sajt mot varje rad på lektionen, medan det fortfarande finns tre dagar kvar att göra något åt det.
| Kriterium | E | C | A |
|---|---|---|---|
| Dokumentets grund | Alla sidor har doctype, lang, charset och en title |
Varje title säger vad just den sidan innehåller. Åäö fungerar överallt, även i filnamn och länkar |
Entiteter används där de behövs, och du kan förklara skillnaden mellan tecknet och entiteten |
| Semantisk struktur | header, nav, main och footer på varje sida. En h1 per sida |
section och article används med skäl. Rubriknivåerna hoppar inte, och strukturen syns i indraget |
Elementvalen är motiverade genomgående. Ingen div där ett semantiskt element finns |
| Text och länkar | Minst tre stycken per sida, en lista, och en navigation som når alla sidor | Egna ord med källor i footer. Länktexterna säger vart de går. Aktuell sida markerad med aria-current |
Ankarlänkar inom en sida, och en sajt som går att ta sig runt i med enbart tangentbord |
| Bilder och media | Minst tre bilder, alla med beskrivande alt |
Bilder i bilder/, minst en i figure med figcaption, filnamn som beskriver innehållet |
Formaten är valda medvetet och motiverade. Ljud eller video med track eller transkript |
| Tabell och formulär | En tabell med th och caption. Ett formulär där varje fält har en label med for |
scope på rubrikcellerna. Flera input-typer och en textarea, samlade i fieldset med legend |
Rubriker åt båda håll i tabellen. required, pattern och autocomplete använda där de hör hemma |
| Validering och test | Noll fel på varje sida | Noll fel och noll varningar. Provad i två webbläsare | Du kan läsa ett valideringsfel och säga vad det betyder innan du rättar det |
| Arbetssätt | Koden ligger i det nya publika repot och sajten är publicerad | Minst sex commits spridda över arbetspassen, med meddelanden som säger vad du gjorde | Du kan förklara varje rad du skrivit, och varför den ser ut som den gör |
Ingen rad väger tyngre än någon annan. Ett E på en rad drar inte ned de andra – men en sajt som inte validerar eller inte är publicerad är inte inlämnad, oavsett vad som står i koden.
Ett E kräver varken CSS eller JavaScript, och det gör inte ett A heller. Skillnaden ligger i att elementen du valt är rätt element, och att du kan säga varför du valde dem.
6. Så lämnar du in
- Din kod är sparad, committad och synkad till det nya repot.
- Sajten är publicerad via GitHub Pages, och du har provat adressen i ett privat fönster där du inte är inloggad.
- Länken till det publika repot är inlämnad i itslearning-uppgiften.
Det är repots adress som lämnas in, inte sajtens:
https://github.com/ANVÄNDARNAMN/REPONAMN
Rättningen tittar på koden, inte bara på hur sidorna ser ut, och sajten når man själv därifrån.
GitHub Pages slås på per repo. Att ditt gamla repo är publicerat hjälper inte det nya. Stegen är desamma som i september: Settings → Pages → Source: Deploy from a branch → Branch: main → Save. Står de i detalj på uppgiftssidan från område 1.
Repot måste också vara publikt. Ett privat repo publicerar ingenting alls och ger 404 för alla utom dig.
7. Kom igång – de tre första sakerna
- Bestäm ämnet och vilka fyra sidor sajten ska ha. Skriv rubrikerna på papper först – det tar tre minuter och sparar en timme.
- Skapa det nya publika repot på
github.com/new. Kryssa i Add a README file, så att repot inte är tomt. - Öppna ett Codespace på det nya repot, skapa
index.htmloch skriv grunddokumentet: doctype,html,headmedcharsetochtitle, ochbody.
8. Så ligger tiden
| Datum | Vad som händer |
|---|---|
| mån 7/9 | Genomgång: HTML-dokumentets grund. Uppgiften delas ut |
| tis 8/9 | Genomgång: semantik, text och länkar |
| fre 11/9 | Genomgång: bilder och media |
| mån 14/9 | Genomgång: tabeller och formulär |
| tis 15/9 | Genomgång: validering och webbläsartest |
| fre 18/9 | Arbetspass med handledning |
| mån 21/9 | Arbetspass |
| tis 22/9 | Arbetspass |
| fre 25/9 | Ledig dag. Ingen lektion |
| mån 28/9 | Arbetspass |
| tis 29/9 | Arbetspass. Avstämning mot bedömningsmatrisen |
| fre 2/10 | Sista finputs. Validera, testa i två webbläsare, committa. Deadline 23:59 |
| mån 5/10 | Prov 1 – kodprov HTML, skriftligt utan dator |
Genomgångarna är fem och arbetspassen sex. Du hinner inte bygga hela sajten på arbetspassen om du väntar med allt tills de börjar – börja skriva sidorna redan under genomgångsveckan, och använd arbetspassen till att göra dem rätt.
9. Innan du lämnar in
Gå igenom listan på fredagen den 2 oktober, i den här ordningen. Den sista punkten är den som oftast glöms.
- Alla fyra sidorna öppnas från navigationen – provat från varje sida.
- Varje sida har en egen
title. - Alla bilder har
alt, och sökvägarna fungerar på den publicerade adressen. - Tabellen har
thochcaption. - Varje formulärfält har en
labelmedfor. - Ingen CSS någonstans – sök efter
stylei koden. - Varje sida ger noll fel i validatorn.
- Allt är committat och synkat, och syns i repot på
github.com. - Adressen fungerar i ett privat fönster.
- Repo-länken är inlämnad i itslearning.
En sajt som ligger uppe men aldrig lämnades in räknas inte. Klicka Lämna in i itslearning-uppgiften även om du tänker fixa något mer på kvällen.
10. Felsökning
20 rader
| Symptom | Trolig orsak | Åtgärd |
|---|---|---|
| Åäö visas som konstiga tecken | <meta charset="utf-8"> saknas eller ligger för långt ned | Den ska stå först i head, före title |
| Validatorn: "Start tag seen without seeing a doctype first" | Dokumentet börjar inte med <!doctype html> | Lägg raden allra överst, före <html> |
| Validatorn: "Consider adding a lang attribute" | lang saknas på html | <html lang="sv"> |
| Validatorn: "Duplicate ID" | Samma id används två gånger på sidan | Ett id får finnas en gång per sida. Döp om det ena |
| Validatorn: "Element figcaption not allowed here" | figcaption ligger utanför sin figure | Flytta in den, som första eller sista barn i figure |
| Validatorn: "Section lacks heading" (varning) | En section utan rubrik | Ge den en rubrik. Har den ingen är det sällan en section |
| Validatorn hittar hundratals fel på en sida | En tagg är ostängd tidigt i dokumentet | Rätta det översta felet och validera om. Ett fel skapar ofta tio |
| Alla länkar i navigationen ger 404 på webben | Versaler i filnamnen | Servern skiljer på stort och smått. Gemener i både filnamn och href |
| Länkarna fungerar hos mig men inte publicerat | Inledande snedstreck i sökvägen | Ta bort det: kontakt.html, inte /kontakt.html |
| Bilden visas som en trasig ikon | src pekar fel, eller bildfilen är inte committad | Jämför sökvägen med filträdet, och kontrollera att filen syns i repot på github.com |
| Bilderna täcker halva skärmen | Ingenting – sajten har ingen CSS | Så ska det se ut här. Storleken sätts i område 3 |
| Tabellen ser ut som en radda text utan linjer | Ingen CSS. Ramar och linjer är form, inte struktur | Rätt. th och caption gör tabellen korrekt, inte snygg |
| Formuläret gör ingenting när jag klickar Skicka | Det finns ingen server som tar emot | Förväntat. Här bedöms formulärets struktur, inte att det skickas |
| Klick på texten bredvid fältet gör ingenting | label saknar for, eller for matchar inget id | for ska vara exakt samma sträng som fältets id |
| Sidan ser stilad ut fast jag inte lagt till CSS | Ett style-attribut ligger kvar, eller så är det webbläsarens standardstil | Sök efter style i koden. Standardstilen är inte din CSS och ska vara kvar |
| Rubrikerna blir olika stora på olika sidor | Du hoppade från h1 till h3 | Nivåerna ska följa på varandra. Storleken är standardstilen, inte ett fel |
| Pages-adressen visar en fillista i stället för sajten | Startsidan heter något annat än index.html | Pages letar efter index.html i repots rot. Döp om filen |
| 404 direkt efter att jag slog på Pages | Bygget är inte klart | Vänta en minut och ladda om. Först därefter felsöker du |
| Läraren ser ett tomt repo | Du committade i det gamla repot | Kontrollera repots namn högst upp i Codespace innan du committar |
| Mitt Codespace öppnar fel projekt | Du har ett Codespace per repo, och öppnade det gamla | Gå via det nya repots Code → Codespaces |