← Område 4 Uppgift · Projekt 3 Felsökning

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.

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:

  1. 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.
  2. Den responsiva sajten. Byggd från wireframen, med brytpunkter som kommer ur innehållet i stället för ur en lista på telefonmodeller.
  3. 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.

Bygg vidare

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.

Börja om

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:

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

RepoBygger du vidare: samma repo som Projekt 1–2. Börjar du om: nytt publikt repo, Pages påslaget
WireframeFigma, mallen från itslearning duplicerad. Länken lämnas in
Viewport<meta name="viewport" …> i head på varje sida
BrytpunkterEgna, motiverade i README.md. Inte kopierade från en lista
Enheterrem, %, fr, vw. px bara där det ska vara fast
KontrastMinst 4,5:1 för brödtext. Kontrollerad, inte gissad
TestningWAVE före och efter. Riktig telefon minst en gång
Valideringvalidator.w3.org för HTML, jigsaw.w3.org/css-validator för CSS
Det här lämnas in
  1. Repo-länken i itslearning – sajten publicerad och fungerande.
  2. Figma-länken till din wireframe.
  3. README.md med 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.

KriteriumECA
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

  1. Bestäm väg: bygga vidare eller börja om. Skriv det i din README.md redan nu.
  2. Öppna Figma-mallen från itslearning och duplicera den. Rita mobilramen först, och bara block – rektanglar med etiketter.
  3. Lägg in viewport-taggen i head på 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

DatumVad som händer
tis 10/11Genomgång: media queries som undantag. Uppgiften delas ut
fre 13/11Genomgång: Figma och wireframes
mån 16/11Genomgång: UX
tis 17/11Genomgång: tillgänglighet och WAVE
fre 20/11Arbetspass. Wireframen ska vara klar här
mån 23/11Ledig dag. Ingen lektion
tis 24/11Arbetspass
fre 27/11Arbetspass
mån 30/11Arbetspass
tis 1/12Arbetspass. Kör WAVE första gången – "före"-mätningen
fre 4/12Arbetspass
mån 7/12Arbetspass
tis 8/12Arbetspass. Kamratrespons i par utifrån bedömningsmatrisen
fre 11/12Sista finputs. Validera, kör WAVE igen, testa i telefon. Deadline 23:59
mån 14/12Prov 3 – responsivt, UX och tillgänglighet, skriftligt utan dator
Wireframen först, koden sedan

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.

  1. Wireframen har två ramar, mobil och desktop, med samma innehåll.
  2. Figma-länken är inlämnad.
  3. Viewport-taggen finns i head på alla sidor.
  4. Sajten är läsbar vid 375 px utan vågrät rullning.
  5. Minst en @media-regel, och du vet varför brytpunkten ligger där.
  6. Minst en bredd är satt i % eller fr.
  7. Brytpunkten är motiverad i README.md.
  8. Alla bilder har alt, alla fält har label.
  9. Hela sajten går att nå med enbart Tab, och fokus syns.
  10. Kontrasten är kontrollerad, inte gissad.
  11. WAVE-rapport före och efter ligger i README.md.
  12. Provad på en riktig telefon.
  13. Noll fel i HTML-validatorn och i CSS-validatorn.
  14. Allt committat och synkat, adressen fungerar i ett privat fönster.
  15. Repo-länken är inlämnad i itslearning.

10. Felsökning

22 rader

SymptomTrolig orsakÅtgärd
Sidan är utzoomad i telefonen och texten pyttelitenViewport-taggen saknasLägg in <meta name="viewport" …> i head. På varje sida
Det går att dra sidan i sidled på mobilenNågot element är bredare än skärmenLeta efter fasta bredder i px. Ett element i taget i DevTools
Bilden spränger sidan i sidledIngen maxbredd sattimg { max-width: 100%; height: auto; }
100vw ger vågrät rullningvw räknar med rullningslisten, 100% gör det inteAnvänd 100% för bredder inuti sidan
@media-regeln gör ingentingDen står före regeln den ska åsidosättaMedia queries sist i filen. Den som står sist vinner vid samma specificitet
@media-regeln gäller hela tidenmin-width och max-width är förväxlademin-width = "från den här bredden och uppåt". Mobile first använder min-width
Layouten hoppar plötsligt vid en viss breddBrytpunkten ligger där innehållet inte behöver denDra fönstret långsamt och se var det faktiskt blir trångt. Flytta brytpunkten dit
Ser bra ut i device mode men trasigt i telefonenDevice mode simulerar bredden, inte allt annatTesta på riktig telefon minst en gång. Publicera och öppna adressen där
Menyn radbryter till oläslighet på smal skärmflex-wrap utan att avstånden hänger medgap på behållaren, och låt menyn bli en kolumn under brytpunkten
Länkarna är svåra att träffa med fingretKlickytan är bara så stor som textenpadding på länken, inte på behållaren. Minst 44 × 44 px
rem ger fel storlek överalltfont-size är satt på htmlLåt html vara. rem utgår från webbläsarens grundstorlek, och den ska besökaren få bestämma
WAVE: Missing alternative textEn img saknar altBeskriv vad bilden visar. Är den ren dekoration: alt=""
WAVE: Empty linkEn länk innehåller bara en bild utan altGe bilden alt som säger vart länken går
WAVE: Missing form labellabel saknas, eller for matchar inte fältets idfor och id ska vara exakt samma sträng
WAVE: Very low contrastText och bakgrund ligger för nära varandraMörkare text eller ljusare bakgrund. Kontrollera i WAVE:s kontrastverktyg
WAVE: Skipped heading levelSidan hoppar från h2 till h4Rubriknivåer är en innehållsförteckning, inte textstorlekar. Storleken sätts i CSS
WAVE: Missing first level headingSidan saknar h1En h1 per sida, som säger vad just den sidan handlar om
Fokusmarkeringen syns inte när jag tabbaroutline: none utan något i ställetTa aldrig bort utan att sätta något annat. :focus-visible
Tab hoppar i konstig ordningOrdningen i HTML-filen skiljer sig från den visuella ordningenFlytta i HTML:en, inte med tabindex. Fokus följer dokumentet
Något klickbart går inte att nå med tangentbordetDet är en div eller span, inte en länk eller knappAnvänd a eller button. De är fokuserbara av sig själva
Sajten ser bra ut men WAVE hittar fel jag inte serDe flesta tillgänglighetsfel är osynliga för den som serDet är hela poängen med verktyget. Rätta felet, inte mätningen
Jag hinner inte fixa allt WAVE hittadeFel och varningar väger olikaTa errors först, contrast errors sedan. Alerts sist – vissa är acceptabla