Web og HTTP
CSS og selektorer
CSS bestemmer, hvordan HTML ser ud. En regel består af en selektor, der udpeger elementer, og et sæt egenskaber, der ændrer dem. Rækkefølgen og hvor specifik selektoren er, afgør, hvilken regel der vinder, når to regler siger noget forskelligt.
Forudsætter, at du har set html-sidens opbygning .
En regel består af to dele
p {
color: #333;
line-height: 1.6;
}
p er selektoren: hvem reglen gælder for. Alt inde i krølleparenteserne er
erklæringer: en egenskab, et kolon, en værdi, et semikolon.
De selektorer, du får brug for
| Selektor | Rammer |
|---|---|
p | alle <p>-elementer |
.kort | alle med class="kort" |
#top | elementet med id="top" |
.kort p | alle <p> inde i noget med klassen kort |
.kort > p | kun <p> direkte inde i kort |
a:hover | et link, musen er over |
input:focus | feltet, der er markeret |
I praksis bruger du klasser til næsten alt. id bruges til enkeltstående ting og
til at pege på fra JavaScript.
Boksmodellen
Hvert element er en kasse med fire lag udefra og ind: margin (afstand udenfor),
border (kant), padding (afstand indeni) og selve indholdet.
.kort {
padding: 16px;
border: 1px solid #ddd;
margin-bottom: 24px;
}
Standardadfærden er, at width kun gælder indholdet, så padding og border
lægges oveni. Det giver næsten altid overraskelser. Derfor starter stort set
alle stylesheets med:
* {
box-sizing: border-box;
}
Så betyder width: 300px, at hele kassen er 300 pixels bred. Padding og kant
inklusive. Det er den opførsel, du forventer.
Hvorfor slår min regel ikke igennem?
Når to regler siger noget forskelligt om det samme, vinder den mest specifikke. Rangordenen, fra svag til stærk:
- elementnavn (
p). Svagest - klasse (
.kort), attribut, pseudoklasse (:hover) id(#top)style="..."skrevet direkte på elementet!important. Stærkest
Er to regler lige specifikke, vinder den, der står nederst i filen.
Layout med flexbox
Flexbox er den letteste måde at lægge ting ved siden af hinanden eller under hinanden med jævn afstand.
.raekke {
display: flex;
gap: 16px;
align-items: center;
justify-content: space-between;
}
display: flexgør elementets børn til flexelementer.gaper afstanden imellem dem.justify-contentstyrer langs rækken,align-itemspå tværs.flex-direction: columnstiller dem under hinanden i stedet.
Med flex-wrap: wrap bryder rækken, når der ikke er plads. Det er ofte alt, der
skal til, for at et layout også fungerer på en telefon.
Kort opsamling
- Selektor + erklæringer. Klasser til næsten alt.
box-sizing: border-boxfra starten.- Specificitet afgør, hvem der vinder;
!importanter en gæld, du optager. - Flexbox med
gapløser de fleste layouts.
Læs videre
- HTML-sidens opbygning HTML forklaret på dansk: sidens opbygning, de vigtigste tags, og hvorfor semantiske elementer betyder noget for både brugere og søgemaskiner.
- Responsivt design Responsivt design forklaret på dansk: viewport, media queries og fleksible enheder. Sådan får du siden til at fungere på telefonen uden at bygge den to gange.
Senest gennemgået .