Webbutveckling 1 · område 4 · projekt
Projekt 3 – Webbplats från egen wireframe
Nu ritar du sajten innan du bygger den. En wireframe i två bredder, en sajt som fungerar lika bra i telefonen som på skärmen, och en tillgänglighet som är kontrollerad i stället för gissad.
- 20 nov Wireframen ska vara klar Ingen inlämning – men härifrån bygger du, och åtta arbetspass återstår.
- 11 dec Inlämning kl 23:59 Repo-länken och Figma-länken lämnas i itslearning-uppgiften.
- 14 dec Prov 3 – responsivt, UX och tillgänglighet Skriftligt prov utan dator.
1. Uppdraget
Du ska rita en webbplats innan du bygger den, och sedan bygga den så att den fungerar lika bra i en telefon som på en skärm – och för den som inte använder mus.
Tre saker bedöms, och de hänger ihop i den ordningen:
- Wireframen. En skiss av sidan i två bredder, mobil och desktop, som visar var innehållet ligger och hur viktigt det är. Ritas först, byggs sedan.
- Den responsiva sajten. Byggd från wireframen, med brytpunkter som kommer ur innehållet i stället för ur en lista på telefonmodeller.
- Tillgängligheten. Kontrollerad med WAVE, inte gissad. Du lämnar in en mätning före och en efter, så att arbetet syns.
Det här är kursens största arbetsblock – nio arbetspass. Det är också första gången du bestämmer hur sajten ska se ut innan du börjar skriva kod.
2. Två vägar – du väljer
Wireframen är obligatorisk. Vilken sajt den föreställer bestämmer du.
Rita en wireframe av sajten du redan har från Projekt 1 och 2, och bygg om den efter skissen: responsiv, tillgänglig och med genomtänkt UX. Du arbetar i samma repo. Den här vägen ger oftast mest – du har innehållet och kan lägga hela tiden på form och funktion.
Rita en wireframe för ett nytt ämne och bygg den sajten från grunden, i ett nytt publikt repo. Du får mer arbete, men helt fria händer. Den här vägen är också utvägen för dig som inte har ett Projekt 2 att bygga vidare på – då börjar du här, och du hamnar inte efter.
Båda vägarna bedöms med samma matris. Matrisen frågar efter wireframe, brytpunkter, UX och tillgänglighet, och de kraven ser likadana ut oavsett vilken sajt du valde.
Säg till mig vilken väg du tar innan du börjar koda, så vet jag vad jag tittar på.
3. Sajten ska ha
Oavsett väg gäller samma minimum, och det är samma omfattning som Projekt 1:
- Minst fyra sidor som hänger ihop med en gemensam navigation
- Semantisk struktur som validerar
- Bilder med
alt-text - Ett formulär med kopplade etiketter
- En extern stilmall
Väljer du att bygga vidare har du redan allt det här. Väljer du att börja om är det första du bygger, och guiderna från område 2 och 3 gäller fortfarande.
4. 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
5. Tekniska krav
| Repo | Bygger du vidare: samma repo som Projekt 1–2. Börjar du om: nytt publikt repo, Pages påslaget |
| Wireframe | Figma, mallen från itslearning duplicerad. Länken lämnas in |
| Viewport | <meta name="viewport" …> i head på varje sida |
| Brytpunkter | Egna, motiverade i README.md. Inte kopierade från en lista |
| Enheter | rem, %, fr, vw. px bara där det ska vara fast |
| Kontrast | Minst 4,5:1 för brödtext. Kontrollerad, inte gissad |
| Testning | WAVE före och efter. Riktig telefon minst en gång |
| Validering | validator.w3.org för HTML, jigsaw.w3.org/css-validator för CSS |
- Repo-länken i itslearning – sajten publicerad och fungerande.
- Figma-länken till din wireframe.
README.mdmed vilken väg du valde, var brytpunkten ligger och varför, samt WAVE-rapporten före och efter som skärmbilder.
6. Bedömningsmatris
Så här bedöms sajten, kriterium för kriterium. Tisdag 8 december gör ni kamratrespons i par utifrån den här matrisen – då har du tre dagar kvar att göra något åt det ni hittar.
| Kriterium | E | C | A |
|---|---|---|---|
| Wireframe | Två ramar, mobil och desktop, samma innehåll i båda. Gråskala | Wireframen går att bygga från: block, hierarki och navigation är entydiga. Anteckning om var brytpunkten ligger | Du kan peka på var den färdiga sajten avviker från skissen och motivera varje avvikelse |
| Från skiss till kod | Sajten känns igen från wireframen | Ordningen och tyngden i skissen finns kvar i koden, i båda bredderna | Skissen har styrt markupen, inte bara utseendet: strukturen bär layouten i stället för att lagas i efterhand |
| Responsiv layout | Viewport-taggen på plats, läsbar vid 375 px, minst en @media-regel, ingen vågrät rullning |
Mobile first. Brytpunkten är vald utifrån innehållet och motiverad i README.md. Relativa enheter bär layouten |
Mjuk skalning med clamp() eller auto-fit där en brytpunkt inte behövs. Hela spannet fungerar, inte bara de bredder du råkade testa |
| UX | Gemensam navigation som går att hitta på alla sidor | Konventioner som besökaren kan: logotypen leder hem, aktuell sida markerad, klickytor minst 44 px. Formuläret vägleder | Hierarkin styr blicken dit du vill, och du kan förklara hur. Inget viktigt kräver att besökaren letar |
| Tillgänglighet | alt på bilder, label på fält, synligt fokus, kontrast minst 4,5:1, rubriknivåer utan hopp |
Noll fel i WAVE efter ditt arbete. Hela sajten nåbar med enbart tangentbord | Noll fel och noll kontrastvarningar. Fokusordningen följer den visuella ordningen i båda bredderna. prefers-reduced-motion om du har rörelse |
| Semantik och kvalitet | HTML och CSS validerar. Semantiska element används | Noll fel i båda validatorerna. Provad på riktig telefon. Stilmallen är läsbar och indelad | Semantiken bär tillgängligheten av sig själv – landmärken, rubriker och länktexter gör att sajten fungerar utan att du lagt till något extra |
| Arbetssätt | Sajten publicerad, wireframe och repo inlämnade | WAVE före och efter dokumenterat i README.md. Commits spridda över arbetspassen |
Du kan visa vad WAVE hittade, vad du gjorde åt det, och vad du valde att inte göra – och varför |
Ingen rad väger tyngre än någon annan. Men en sajt som inte validerar eller inte är publicerad är inte inlämnad, oavsett hur den ser ut.
7. Kom igång – de tre första sakerna
- Bestäm väg: bygga vidare eller börja om. Skriv det i din
README.mdredan nu. - Öppna Figma-mallen från itslearning och duplicera den. Rita mobilramen först, och bara block – rektanglar med etiketter.
- Lägg in viewport-taggen i
headpå alla dina sidor och öppna sajten i telefonen.
Det tredje steget är den här raden. Den tar två minuter och visar dig vad hela projektet handlar om – jämför sajten i telefonen före och efter:
<meta name="viewport" content="width=device-width, initial-scale=1">
8. Så ligger tiden
| Datum | Vad som händer |
|---|---|
| tis 10/11 | Genomgång: media queries som undantag. Uppgiften delas ut |
| fre 13/11 | Genomgång: Figma och wireframes |
| mån 16/11 | Genomgång: UX |
| tis 17/11 | Genomgång: tillgänglighet och WAVE |
| fre 20/11 | Arbetspass. Wireframen ska vara klar här |
| mån 23/11 | Ledig dag. Ingen lektion |
| tis 24/11 | Arbetspass |
| fre 27/11 | Arbetspass |
| mån 30/11 | Arbetspass |
| tis 1/12 | Arbetspass. Kör WAVE första gången – "före"-mätningen |
| fre 4/12 | Arbetspass |
| mån 7/12 | Arbetspass |
| tis 8/12 | Arbetspass. Kamratrespons i par utifrån bedömningsmatrisen |
| fre 11/12 | Sista finputs. Validera, kör WAVE igen, testa i telefon. Deadline 23:59 |
| mån 14/12 | Prov 3 – responsivt, UX och tillgänglighet, skriftligt utan dator |
Frestelsen är att öppna kodredigeraren direkt och rita skissen efteråt, för att det känns som att koda är att komma framåt. Gör inte det. En wireframe tar en lektion att rita och sparar tre lektioners omtag, och den som bygger utan skiss märker det först när desktopvyn ska göras och ingenting passar.
Ha wireframen klar till fredag 20 november. Då har du åtta arbetspass kvar till att bygga, och du vet vad du bygger.
9. Innan du lämnar in
Gå igenom listan på fredagen den 11 december, i den här ordningen.
- Wireframen har två ramar, mobil och desktop, med samma innehåll.
- Figma-länken är inlämnad.
- Viewport-taggen finns i
headpå alla sidor. - Sajten är läsbar vid 375 px utan vågrät rullning.
- Minst en
@media-regel, och du vet varför brytpunkten ligger där. - Minst en bredd är satt i
%ellerfr. - Brytpunkten är motiverad i
README.md. - Alla bilder har
alt, alla fält harlabel. - Hela sajten går att nå med enbart Tab, och fokus syns.
- Kontrasten är kontrollerad, inte gissad.
- WAVE-rapport före och efter ligger i
README.md. - Provad på en riktig telefon.
- Noll fel i HTML-validatorn och i CSS-validatorn.
- Allt committat och synkat, adressen fungerar i ett privat fönster.
- Repo-länken är inlämnad i itslearning.
10. Felsökning
22 rader
| Symptom | Trolig orsak | Åtgärd |
|---|---|---|
| Sidan är utzoomad i telefonen och texten pytteliten | Viewport-taggen saknas | Lägg in <meta name="viewport" …> i head. På varje sida |
| Det går att dra sidan i sidled på mobilen | Något element är bredare än skärmen | Leta efter fasta bredder i px. Ett element i taget i DevTools |
| Bilden spränger sidan i sidled | Ingen maxbredd satt | img { max-width: 100%; height: auto; } |
100vw ger vågrät rullning | vw räknar med rullningslisten, 100% gör det inte | Använd 100% för bredder inuti sidan |
@media-regeln gör ingenting | Den står före regeln den ska åsidosätta | Media queries sist i filen. Den som står sist vinner vid samma specificitet |
@media-regeln gäller hela tiden | min-width och max-width är förväxlade | min-width = "från den här bredden och uppåt". Mobile first använder min-width |
| Layouten hoppar plötsligt vid en viss bredd | Brytpunkten ligger där innehållet inte behöver den | Dra fönstret långsamt och se var det faktiskt blir trångt. Flytta brytpunkten dit |
| Ser bra ut i device mode men trasigt i telefonen | Device mode simulerar bredden, inte allt annat | Testa på riktig telefon minst en gång. Publicera och öppna adressen där |
| Menyn radbryter till oläslighet på smal skärm | flex-wrap utan att avstånden hänger med | gap på behållaren, och låt menyn bli en kolumn under brytpunkten |
| Länkarna är svåra att träffa med fingret | Klickytan är bara så stor som texten | padding på länken, inte på behållaren. Minst 44 × 44 px |
rem ger fel storlek överallt | font-size är satt på html | Låt html vara. rem utgår från webbläsarens grundstorlek, och den ska besökaren få bestämma |
| WAVE: Missing alternative text | En img saknar alt | Beskriv vad bilden visar. Är den ren dekoration: alt="" |
| WAVE: Empty link | En länk innehåller bara en bild utan alt | Ge bilden alt som säger vart länken går |
| WAVE: Missing form label | label saknas, eller for matchar inte fältets id | for och id ska vara exakt samma sträng |
| WAVE: Very low contrast | Text och bakgrund ligger för nära varandra | Mörkare text eller ljusare bakgrund. Kontrollera i WAVE:s kontrastverktyg |
| WAVE: Skipped heading level | Sidan hoppar från h2 till h4 | Rubriknivåer är en innehållsförteckning, inte textstorlekar. Storleken sätts i CSS |
| WAVE: Missing first level heading | Sidan saknar h1 | En h1 per sida, som säger vad just den sidan handlar om |
| Fokusmarkeringen syns inte när jag tabbar | outline: none utan något i stället | Ta aldrig bort utan att sätta något annat. :focus-visible |
| Tab hoppar i konstig ordning | Ordningen i HTML-filen skiljer sig från den visuella ordningen | Flytta i HTML:en, inte med tabindex. Fokus följer dokumentet |
| Något klickbart går inte att nå med tangentbordet | Det är en div eller span, inte en länk eller knapp | Använd a eller button. De är fokuserbara av sig själva |
| Sajten ser bra ut men WAVE hittar fel jag inte ser | De flesta tillgänglighetsfel är osynliga för den som ser | Det är hela poängen med verktyget. Rätta felet, inte mätningen |
| Jag hinner inte fixa allt WAVE hittade | Fel och varningar väger olika | Ta errors först, contrast errors sedan. Alerts sist – vissa är acceptabla |