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.
- 6 nov Inlämning kl 23:59 Samma repo som Projekt 1. Länken lämnas i itslearning-uppgiften.
- 9 nov Prov 2 – kodprov CSS Skriftligt prov utan dator.
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.
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.
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
| Vad | Så ska det vara |
|---|---|
| Repo | Samma repo som Projekt 1. Sajten växer, den byts inte ut |
| Stilmall | stil.css i repots rot, bredvid index.html |
| Inkoppling | <link rel="stylesheet" href="stil.css"> i head på varje sida |
| Sökvägar | Relativa. Aldrig inledande snedstreck |
| Indrag | 2 mellanslag |
| Enheter | rem för typografi och avstånd. px bara där det verkligen ska vara fast |
| Variabler | Definierade på :root, namngivna efter vad de är till för |
| Validering | validator.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.
| Kriterium | E | C | A |
|---|---|---|---|
| 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
- Ö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.
- Skapa
stil.cssi repots rot och koppla in den iheadpå alla sidor. - Skriv
:roothö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
| Datum | Vad som händer |
|---|---|
| tis 6/10 | Genomgång: stilmallar och selektorer. Uppgiften delas ut |
| fre 9/10 | Genomgång: boxmodell, färg och typografi |
| mån 12/10 | Genomgång: Flexbox |
| tis 13/10 | Genomgång: Grid |
| fre 16/10 | Genomgång: CSS-variabler och designsystem |
| mån 19/10 | Arbetspass |
| tis 20/10 | Arbetspass |
| fre 23/10 | Arbetspass. Sista passet före höstlovet |
| v.44 | Höstlov. Ingen lektion 26–30 oktober |
| mån 2/11 | Arbetspass |
| tis 3/11 | Arbetspass. Kamratrespons i par utifrån bedömningsmatrisen |
| fre 6/11 | Sista finputs. Validera HTML och CSS, testa i två webbläsare. Deadline 23:59 |
| mån 9/11 | Prov 2 – kodprov CSS, skriftligt utan dator |
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.
stil.cssär inkopplad iheadpå alla sidor.- Ingen
stylekvar i HTML-filerna – sök efter ordet. box-sizing: border-boxär satt.- Minst tre variabler på
:root, använda på flera ställen. - Navigationen använder Flexbox, något område använder Grid.
- Bilderna har
max-width: 100%. - Fönstret går att smalna utan att layouten faller isär.
- Alla sidor ger noll fel i HTML-validatorn.
- Stilmallen ger noll fel i CSS-validatorn.
- Provad i två webbläsare.
- 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 |
|---|---|---|
| Stilmallen gör ingenting alls | link-raden ligger i body, eller filnamnet stämmer inte | Raden hör hemma i head. Jämför filnamnet tecken för tecken |
| Stilen fungerar på startsidan men inte på de andra | link-raden saknas på de sidorna | Varje sida behöver sin egen rad. Kopiera den till alla fyra |
| En regel fungerar, nästa gör det inte | Semikolon saknas efter värdet innan | Semikolon efter varje värde. Felet syns på nästa rad, inte på den trasiga |
| Allt efter en viss regel slutar gälla | En klammer är ostängd | Räkna klamrarna. Varje { har en } |
| Min ändring syns inte alls | Webbläsaren visar en sparad version | Ladda om med Ctrl + F5 |
| Elementet blir bredare än jag satt | padding och border läggs ovanpå bredden | box-sizing: border-box för hela sajten |
| Marginalerna mellan två element slås ihop | Marginalkollaps – två lodräta marginaler blir en | Använd gap eller padding i stället för marginal |
| Färgen slår inte igenom | En annan regel har högre specificitet | Titta i DevTools vilken regel som vinner. Ett id slår en klass |
Jag måste skriva !important för att det ska funka | Specificiteten har sprungit iväg | Sänk den vinnande selektorn i stället. !important flyttar bara problemet |
| Bilden spränger sidan i sidled | Ingen maxbredd satt | img { max-width: 100%; height: auto; } |
| Flex-barnen ligger på varandra i stället för på rad | flex-direction är satt till column | Standardvärdet är row. Ta bort raden eller ändra den |
| Flexbox radbryter inte när det blir trångt | flex-wrap saknas | flex-wrap: wrap på behållaren |
gap gör ingenting | Elementet är varken flex eller grid | gap gäller bara i flex, grid och flerspaltig text |
| Grid-kolumnerna blir olika breda | fr blandat med fasta värden | 1fr betyder lika delar av det som blir över, inte lika bredd |
| Rutnätet skalar inte när fönstret smalnar | Fasta kolumnvärden | repeat(auto-fit, minmax(16rem, 1fr)) |
| Variabeln gör ingenting | Den är definierad i fel block, eller stavad olika på de två ställena | Definiera på :root, använd med var(--namn) |
var(--namn) syns som text på sidan | Bindestrecken saknas i definitionen | Två bindestreck i namnet: --namn |
| Texten är svår att läsa mot bakgrunden | För låg kontrast | Ljusare text eller mörkare bakgrund. Gissa inte – kontrollera |
| Fokusmarkeringen är borta när jag tabbar | outline: none utan något i stället | Ta aldrig bort utan att sätta något annat. :focus-visible |
| Layouten faller isär när fönstret smalnar | Fasta bredder i px | Procent, fr eller minmax i stället |
| CSS-validatorn klagar på något jag inte skrivit | Den läser hela filen, även gamla rader | Läs radnumret i meddelandet. Validatorn pekar rätt |
| Sidan ser annorlunda ut i Firefox | Olika standardstil för formulär och rubriker | Sätt egna värden på det som skiljer sig |