7 Et eget stilark for hele nettstedet
I dette kapitlet lager du nettstedet til Turlaget. Alle sidene skal se ut som de hører sammen, og derfor samler du CSS-koden i én fil. Lagre alt du lager i dette kapitlet i mappen kap07-stilark.
7.1 Flytte CSS til en egen fil
turlaget/index.html
turlaget/stil.css
Et <style>-element gjelder bare for den siden det står på. Derfor skriver vi CSS-koden i en egen fil, et stilark, som alle sidene henter med <link> i <head>.
- Les koden ovenfor. Hvilken kodelinje henter stilarket?
- Lag mappen
turlagetmed fileneindex.htmlogstil.css. Skriv koden ovenfor. Forsiden skal ha en<header>med overskriften Turlaget og en meny med lenkene Forside, Turer og Om turlaget, og et<main>med et avsnitt om laget. - Åpne forsiden i nettleseren. Har siden fått fargene fra stilarket?
- Lag siden
turer.htmlmed den samme<head>og<header>. I<main>skal det stå en tabell over tre turer med dato, mål og vanskelighetsgrad. Får siden den samme stilen? - Endre fargen på overskriftene i
stil.css. Sjekk at fargen endres på begge sidene.
Et stilark inneholder bare CSS-regler. Skriver du <style> eller andre HTML-tagger i stil.css, virker ikke regelen som kommer rett etter.
- Inspiser en overskrift. Hvor i fanen Styles ser du at regelen kommer fra
stil.css? Klikk på filnavnet. Hva skjer?
7.2 Stilark og undermapper
Mappe
turlaget
├── index.html
├── turer.html
├── stil.css
├── bilder
│ └── fjell.jpg
└── sider
└── om-turlaget.html
Adressen i href på <link> er en relativ sti, på samme måte som adressene i lenker og bilder. Siden om-turlaget.html ligger i mappen sider, og stilarket ligger én mappe opp.
- Lag mappen
siderog sidenom-turlaget.htmlmed den samme<header>som de andre sidene. Hvilke adresser i menyen må endres? - Nedenfor ser du fire
<link>-tagger tilsider/om-turlaget.html. Bare én av dem virker.
Kode A
<link rel="stylesheet" href="stil.css">Kode B
<link rel="stylesheet" href="../stil.css">Kode C
<link href="../stil.css">Kode D
<style src="../stil.css"></style>- Finn kodebiten som virker. Forklar hvorfor de tre andre ikke virker.
- Legg til den riktige
<link>-taggen isider/om-turlaget.html. Sjekk at siden får stilen.
Ser en side ut som om den ikke har noe CSS, er adressen i <link> ofte feil. Åpne fanen Network i utviklerverktøyene, og last inn siden på nytt. En fil som ikke blir funnet, står med rødt.
Når alle sidene bruker det samme stilarket, får en ny side riktig utseende med en gang. Du trenger bare å merke opp teksten riktig.
- Turlaget har sendt teksten til en ny side som ren tekst. Lag
nybegynner.htmli mappensidermed den samme<head>og<header>, og merk opp teksten i<main>. Ikke skriv ny CSS. Ser siden ut som resten av nettstedet?
nybegynner.txt
Tur for nybegynnere
Er du ny i Turlaget? Hver høst starter vi med en enkel tur der alle kan være med.
Hva skal jeg ha med?
gode sko
regntøy
matpakke og drikke
Turen
Vi går fra parkeringsplassen ved Fjellstua klokka 10. Turen er seks kilometer lang og tar omtrent tre timer.
Påmelding
Send en e-post til turlaget@skolen.example innen torsdag.
- Legg til en lenke til den nye siden i menyen på alle sidene. Hvorfor er det mer arbeid å legge til en lenke i menyen enn å endre en farge?
7.3 Hvilken regel vinner?
Ofte gjelder flere regler for det samme elementet. Da betyr det mest hvor spesifikk velgeren er, slik tabellen viser. Er velgerne like spesifikke, vinner regelen som står sist.
| Velger | Spesifisitet |
|---|---|
style-attributt |
høyest |
#id |
høy |
.klasse og :hover |
middels |
element, som td |
lav |
- Les koden ovenfor. Gjett hvilken farge en vanlig celle i turtabellen får, og hvilken farge en celle med
class="full"får. - En av turene er full. Gi cellen med vanskelighetsgraden for den turen klassen
full, og legg til reglene nederst istil.css. Sjekk om du gjettet riktig. - Inspiser en vanlig celle. Hvilke av de tre reglene er streket over i fanen Styles? Hvorfor?
- Flytt regelen
.fullnederst i stilarket. Endrer det noe? Forklar. - Fjern den siste regelen for
tdigjen.
Står <link> og <style> på den samme siden, gjelder de samme reglene: Det som kommer sist, vinner når velgerne er like spesifikke.
Forklar hva spesifisitet betyr i CSS. Gi meg fire par med CSS-regler, ett om gangen, og la meg gjette hvilken regel som vinner. Si fra om jeg har rett, og forklar hvorfor.
7.4 Arv
turlaget/stil.css
Noen egenskaper arves. Gir du <body> en skrift og en farge, får alle elementene inne i <body> den samme skriften og fargen, hvis ikke en annen regel bestemmer noe annet. Egenskaper som har med boksen å gjøre, som border, padding og margin, arves ikke.
- Les koden ovenfor. Gjett hvilke elementer på siden som får kanten.
- Legg til
border: 3px solid #1f5f8b;i regelen forbody. Får avsnittene og overskriftene kant? Fjern kanten igjen. - Inspiser et avsnitt. Langt nede i fanen Styles står det
Inherited from body. Hva betyr det? - Lenkene har ikke samme farge som teksten rundt. Inspiser en lenke, og finn ut hvorfor.
- Lag en
<footer>med en e-postlenke på alle sidene, og regelenfooter a { color: inherit; }. Hva gjør verdieninherit?
| Arves | Arves ikke |
|---|---|
color, font-family, font-size, font-weight, line-height, text-align |
border, padding, margin, width, height, background-color |
Bruk arv til å skrive mindre CSS. Gi <body> skriften og fargen som skal gjelde mest, og lag egne regler bare for det som skal være annerledes.
7.5 Lenker og meny med stil
turlaget/stil.css
En lenke kan ha ulik stil etter hva brukeren gjør med den. :hover gjelder når musepekeren er over lenken, og :focus når lenken er valgt med TabTab. Klassen aktiv gir vi lenken til den siden brukeren er på.
- Les koden ovenfor, og gjett hvordan menyen kommer til å se ut.
- Legg til reglene i
stil.css. - Gi lenken Forside klassen
aktiviindex.html, og lenken Turer klassenaktiviturer.html. Gjør det samme på siden om turlaget. - Hvorfor har vi gitt lenkene
display: inline-blockog fyll? Prøv å klikke på lenkene med og uten fyllet. - Klikk på siden, og trykk TabTab flere ganger. Kan du se hvilken lenke som er valgt?
Fjern aldri streken nettleseren tegner rundt en lenke som er valgt med TabTab, uten å lage en annen tydelig markering. Uten markering vet ikke den som bruker tastatur, hvor hun er på siden.
- Lag en regel for lenker inne i
<main>, med en farge som har god kontrast. Behold understrekingen. - Velgeren
a:visitedgjelder for lenker brukeren har besøkt. Gi besøkte lenker i<main>en litt annen farge.
7.6 Bakgrunnsbilder
turlaget/stil.css
Med background-image legger du et bilde bak innholdet i en boks. Adressen i url() er en relativ sti fra stilarket, og ikke fra HTML-siden.
- Les koden ovenfor, og gjett hvordan toppen av siden kommer til å se ut.
- Lag mappen
bilder, og legg inn et bilde av et fjell som du har tatt selv eller har lov til å bruke. Gi det navnetfjell.jpg. Legg til reglene istil.css. - Vises bildet på
index.html? Vises det påsider/om-turlaget.html? Forklar hvorfor adressen iurl()er den samme for begge sidene. - Endre
background-size: covertilcontain. Hva skjer? Endre tilbake. - Er det god kontrast mellom den hvite overskriften og bildet? Hvorfor er det vanskelig å måle?
- Endre
background-position: centertiltopog deretter tilbottom. Hva skjer?
Et bakgrunnsbilde har ingen alternativ tekst, og skjermleseren hopper over det. Bruk bakgrunnsbilder bare til pynt. Et bilde som viser noe viktig, skal være et <img>-element.
- Bildet kan gjøre overskriften vanskelig å lese. Gi overskriften en bakgrunnsfarge og fyll, slik at teksten blir lett å lese uansett hva bildet viser.
background-colorstår foranbackground-image. Endre adressen til et bilde som ikke finnes. Hvorfor er det lurt å ha en bakgrunnsfarge også?
7.7 Et ryddig stilark
turlaget/stil.css
Når stilarket blir langt, er det lurt å rydde. Tekst mellom /* og */ er en kommentar i CSS. Fargene kan du samle i variabler øverst. En variabel begynner med --, og du bruker den med var().
- Les koden ovenfor. Hvilken farge får
<h1>? Hva tror du:rooter? - Lag variablene øverst i
stil.css, og erstatt alle fargekodene i stilarket med variabler. - Endre
--fjelltil#2a6f4e. Hva skjer på alle sidene? Endre tilbake. - Del stilarket i deler med kommentarer, for eksempel Farger, Generelt, Toppen, Menyen, Hovedinnholdet, Tabeller og Bunnen. Flytt reglene til riktig del.
Skriv de generelle reglene først, som *, body og overskrifter, og de spesielle reglene etterpå. Da vinner de spesielle reglene når velgerne er like spesifikke.
Her er stilarket mitt: [lim inn stilarket]. Ikke skriv det om for meg. Foreslå hvordan jeg kan dele det i deler med kommentarer, og pek på regler som gjentar seg.
Oppsummering
I dette kapitlet har du laget et nettsted der alle sidene bruker det samme stilarket. Du har lært hvilken regel som vinner, hva som arves, og hvordan du holder orden i et stilark.
Tre måter å skrive CSS på
| Måte | Hvor | Gjelder for |
|---|---|---|
style-attributt |
i starttaggen | ett element |
<style>-element |
i <head> |
én side |
| eget stilark | i stil.css |
alle sidene som har <link> |
Et ryddig stilark
turlaget/stil.css
Merk deg følgende:
- Adressen i
hrefpå<link>og iurl()er relative stier.url()regnes fra stilarket. - En id slår en klasse, og en klasse slår et element. Er velgerne like spesifikke, vinner den som står sist.
- Farge og skrift arves. Fyll, kant og marg arves ikke.
- Lenker skal ha en tydelig markering når de er valgt med TabTab.
Oppgaver
Oppgave 7.1
oppg1-rett-feil/index.html
Siden får ikke stilen fra stilarket. Lag mappen oppg1-rett-feil med de to filene, og rett de to feilene.
Oppgave 7.2
color: var(--gronn);--gronn: #2e7d32;}:root {h2 {}
Sett sammen kodelinjene til en variabel og en regel som bruker variabelen.
Oppgave 7.3
oppg3-hvem-vinner.html
Gjett hvilken farge avsnittet får. Forklar hvorfor. Hvilken farge får det hvis du fjerner id="fjelltur"? Sjekk svarene dine.
Oppgave 7.4
Forklar med egne ord hva arv er i CSS. Gi to eksempler på egenskaper som arves, og to som ikke arves.
Oppgave 7.5
Mappe
klubben
├── index.html
├── css
│ └── stil.css
├── bilder
│ └── bane.jpg
└── sider
└── trening.html
Skriv adressen i href på <link> i index.html og i trening.html. Skriv også adressen i url() når stil.css skal bruke bane.jpg som bakgrunnsbilde.
B-oppgaver
Oppgave 7.6
Kopier mappen klubb fra kapittel 6 over til mappen kap07-stilark. Flytt all CSS-koden over i ett stilark som alle sidene bruker. Menyen skal vise hvilken side du er på, og fargene skal være variabler.
Oppgave 7.7
En side kan ha flere <link>-tagger. Lag mappen oppg7-to-stilark med to sider, stil.css med regler for begge sidene og spesiell.css med regler som bare gjelder for den ene siden. Hvilken rekkefølge må <link>-taggene ha? Lag en regel i spesiell.css som overstyrer en regel i stil.css, og forklar hvorfor den vinner.
Oppgave 7.8
Lag mappen oppg8-to-utseender med en side og to ulike stilark, lys.css og mork.css. Bytt mellom dem ved å endre adressen i <link>, uten å endre noe annet i HTML-koden. Hva forteller det deg om forskjellen på HTML og CSS?
Oppgave 7.9
Undersøk @media (prefers-color-scheme: dark). Lag en mørk utgave av stilarket til Turlaget ved å endre verdiene til fargevariablene inne i @media. Sjekk at kontrasten fortsatt er god nok. Hvordan tester du den mørke utgaven uten å endre innstillingene på datamaskinen?