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

Webbutveckling 1 · område 3 · projekt

Projekt 2 – Stilsatt webbplats

Nu formger du sajten du byggde i Projekt 1. Extern stilmall, eget designsystem i CSS-variabler, layout med Flexbox och Grid – och en sajt som håller ihop på alla fyra sidorna.

1. Uppdraget

Du ska formge sajten du byggde i Projekt 1. Samma innehåll, samma sidor, samma repo – men nu med en extern stilmall som gör den till din.

Formen ska byggas på ett designsystem: ett fåtal färger, en typografisk skala och en uppsättning avstånd, samlade som CSS-variabler och återanvända på hela sajten. Layouten byggs med Flexbox och Grid, och den ska tåla att fönstret smalnar utan att falla isär.

Sajten ska fortfarande validera – både HTML och CSS.

2. Får jag ändra i HTML:en?

Ja. Att formge kräver nästan alltid att du lägger till class-attribut, och ibland ett element som håller ihop en grupp.

Regeln

HTML får ändras för att bära form, men strukturen ska fortfarande vara semantisk och validera. Klasser är fritt fram. En ny div lägger du till först när ingen befintlig struktur duger – och kan du inte förklara varför den behövs, behövs den inte.

Det du inte får göra är att byta ut semantiska element mot div för att det blir enklare att styla. header, nav, main, section och footer går utmärkt att formge som de är.

3. Har du inget färdigt Projekt 1?

Två vägar, och båda är godkända.

Rätta det du har. Fungerar sajten men har valideringsfel: rätta dem först. Det ingår i den här uppgiften, och det går fort med felsökningstabellen i HTML-guiden.

Utgå från startsajten. Finns ingen sajt att stilsätta ligger det en färdig, ostilad fyrasidig webbplats i itslearning under område 3. Ladda ner den, lägg den i ditt repo och formge den i stället.

Du hamnar inte efter – och får inget försprång

Startsajten ligger på ren E-nivå: den uppfyller ska-kraven i Projekt 1 och ingenting mer. Allt som bedöms i Projekt 2 är formen, och den bygger du själv oavsett vilken sajt du utgår från. Säg till mig om du tar startsajten, så vet jag varför innehållet inte är ditt.

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

Kryssen sparas i din webbläsare.

5. Tekniska krav

VadSå ska det vara
RepoSamma repo som Projekt 1. Sajten växer, den byts inte ut
Stilmallstil.css i repots rot, bredvid index.html
Inkoppling<link rel="stylesheet" href="stil.css"> i head på varje sida
SökvägarRelativa. Aldrig inledande snedstreck
Indrag2 mellanslag
Enheterrem för typografi och avstånd. px bara där det verkligen ska vara fast
VariablerDefinierade på :root, namngivna efter vad de är till för
Valideringvalidator.w3.org för HTML, jigsaw.w3.org/css-validator för CSS

Så här ser repot ut när du är klar:

bilder/
  ...
index.html
sida-2.html
sida-3.html
sida-4.html
stil.css
README.md

En stilmall räcker. Delar du upp CSS:en i flera filer ska det finnas ett skäl, och de ska kopplas in i en ordning du kan förklara.

6. Bedömningsmatris

Så här bedöms sajten, kriterium för kriterium. Tisdag 3 november 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
Stilmall och selektorer Extern stil.css inkopplad på varje sida. Ingen CSS i HTML Klasser i stället för id. Selektorerna är läsbara och stilmallen indelad i kommenterade block Låg och medveten specificitet. Inga !important, inga långa kedjor. Du kan förklara varför en regel vinner
Boxmodell, färg och typografi box-sizing: border-box, egna färger med läsbar kontrast, typsnittsstack och line-height Färg och typografi som skala i variabler. rem i stället för px. Avstånden kommer från ett fåtal värden Hela systemet i variabler, inklusive avstånd, radie och skugga. Kontrasten är kontrollerad, inte gissad
Flexbox Navigationen är layoutad med Flexbox gap i stället för marginaler. Något radbryter med wrap när det blir trångt Flexbox används där den passar bäst, och du kan säga varför just där och inte Grid
Grid Minst ett område använder Grid Ett rutnät som skalar av sig självt med repeat(auto-fit, minmax(...)) Sidlayouten byggd med grid-template-areas
Designsystem Minst tre variabler på :root, använda på flera ställen Variabelnamnen säger vad de är till för, och hårdkodade värden är utbytta Mörkt läge som byter enbart variabelvärden. Systemet går att ändra på ett ställe och slår igenom överallt
Konsekvens och kvalitet Alla sidor delar stilmall och hör ihop. HTML och CSS validerar Noll fel i båda validatorerna, provad i två webbläsare, hovring och fokus syns :focus-visible skilt från :hover. Layouten håller på varje bredd du provar
Arbetssätt Sajten är publicerad och inlämnad Commits spridda över arbetspassen med meddelanden som säger vad du gjorde Du kan förklara varje regel i din stilmall, och vad som händer om du tar bort den

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. Öppna ditt repo från Projekt 1 och kontrollera att alla fyra sidorna validerar. Gör de inte det är det första du rättar.
  2. Skapa stil.css i repots rot och koppla in den i head på alla sidor.
  3. Skriv :root högst upp i stilmallen med tre variabler, och använd dem direkt.

Det tredje steget ser ut så här. Skriv av det, byt färgerna mot dina egna, och ladda om varje sida för att se att det slår igenom överallt:

:root {
  --bakgrund: #fdfdfb;
  --text: #1c1c1a;
  --accent: #2f6f5e;
}

body {
  background: var(--bakgrund);
  color: var(--text);
}

8. Så ligger tiden

DatumVad som händer
tis 6/10Genomgång: stilmallar och selektorer. Uppgiften delas ut
fre 9/10Genomgång: boxmodell, färg och typografi
mån 12/10Genomgång: Flexbox
tis 13/10Genomgång: Grid
fre 16/10Genomgång: CSS-variabler och designsystem
mån 19/10Arbetspass
tis 20/10Arbetspass
fre 23/10Arbetspass. Sista passet före höstlovet
v.44Höstlov. Ingen lektion 26–30 oktober
mån 2/11Arbetspass
tis 3/11Arbetspass. Kamratrespons i par utifrån bedömningsmatrisen
fre 6/11Sista finputs. Validera HTML och CSS, testa i två webbläsare. Deadline 23:59
mån 9/11Prov 2 – kodprov CSS, skriftligt utan dator
Höstlovet ligger mitt i projektet

Efter fredag 23 oktober är det tio dagar innan vi ses igen. Den som kommer tillbaka utan att veta var hen var förlorar ett helt arbetspass på att komma ihåg.

Ha det här klart innan lovet: stilmallen inkopplad på alla sidor, variablerna på plats, färger och typografi satta, och navigationen layoutad med Flexbox. Då är det Grid och finputs som väntar efter lovet, och det hinns med på tre pass.

Skriv en rad i din README.md innan du går på lov om vad som är kvar. Det tar en minut och sparar en kvart.

9. Innan du lämnar in

Gå igenom listan på fredagen den 6 november, i den här ordningen.

  1. stil.css är inkopplad i head på alla sidor.
  2. Ingen style kvar i HTML-filerna – sök efter ordet.
  3. box-sizing: border-box är satt.
  4. Minst tre variabler på :root, använda på flera ställen.
  5. Navigationen använder Flexbox, något område använder Grid.
  6. Bilderna har max-width: 100%.
  7. Fönstret går att smalna utan att layouten faller isär.
  8. Alla sidor ger noll fel i HTML-validatorn.
  9. Stilmallen ger noll fel i CSS-validatorn.
  10. Provad i två webbläsare.
  11. Allt committat och synkat, adressen fungerar i ett privat fönster.
  12. Repo-länken är inlämnad i itslearning.

10. Felsökning

22 rader

SymptomTrolig orsakÅtgärd
Stilmallen gör ingenting allslink-raden ligger i body, eller filnamnet stämmer inteRaden hör hemma i head. Jämför filnamnet tecken för tecken
Stilen fungerar på startsidan men inte på de andralink-raden saknas på de sidornaVarje sida behöver sin egen rad. Kopiera den till alla fyra
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 ostängdRäkna klamrarna. Varje { har en }
Min ändring syns inte allsWebbläsaren visar en sparad versionLadda om med Ctrl + F5
Elementet blir bredare än jag sattpadding och border läggs ovanpå breddenbox-sizing: border-box för hela sajten
Marginalerna mellan två element slås ihopMarginalkollaps – två lodräta marginaler blir enAnvänd gap eller padding i stället för marginal
Färgen slår inte igenomEn annan regel har högre specificitetTitta i DevTools vilken regel som vinner. Ett id slår en klass
Jag måste skriva !important för att det ska funkaSpecificiteten har sprungit ivägSänk den vinnande selektorn i stället. !important flyttar bara problemet
Bilden spränger sidan i sidledIngen maxbredd sattimg { max-width: 100%; height: auto; }
Flex-barnen ligger på varandra i stället för på radflex-direction är satt till columnStandardvärdet är row. Ta bort raden eller ändra den
Flexbox radbryter inte när det blir trångtflex-wrap saknasflex-wrap: wrap på behållaren
gap gör ingentingElementet är varken flex eller gridgap gäller bara i flex, grid och flerspaltig text
Grid-kolumnerna blir olika bredafr blandat med fasta värden1fr betyder lika delar av det som blir över, inte lika bredd
Rutnätet skalar inte när fönstret smalnarFasta kolumnvärdenrepeat(auto-fit, minmax(16rem, 1fr))
Variabeln gör ingentingDen är definierad i fel block, eller stavad olika på de två ställenaDefiniera på :root, använd med var(--namn)
var(--namn) syns som text på sidanBindestrecken saknas i definitionenTvå bindestreck i namnet: --namn
Texten är svår att läsa mot bakgrundenFör låg kontrastLjusare text eller mörkare bakgrund. Gissa inte – kontrollera
Fokusmarkeringen är borta när jag tabbaroutline: none utan något i ställetTa aldrig bort utan att sätta något annat. :focus-visible
Layouten faller isär när fönstret smalnarFasta bredder i pxProcent, fr eller minmax i stället
CSS-validatorn klagar på något jag inte skrivitDen läser hela filen, även gamla raderLäs radnumret i meddelandet. Validatorn pekar rätt
Sidan ser annorlunda ut i FirefoxOlika standardstil för formulär och rubrikerSätt egna värden på det som skiljer sig