Modul 3

Kap 3.2 - Färg, typografi och läsbarhet

Färg och typografi ska hjälpa användaren att läsa, förstå och hitta rätt.

Mål

  • Använda färg på ett kontrollerat sätt i CSS.
  • Förstå min- och maxvärden i rgb() och hsl().
  • Välja läsbara fonter och font stacks.
  • Förstå kontrast, line-height och textjustering.

Färger i CSS

Du kan ange färger med namn, hexkod, RGB eller HSL. Namngivna färger är praktiska när du testar, men i designarbete behöver du oftast mer kontroll.

body {
    color: #172026;
    background-color: rgb(246 248 247);
}

.warning {
    background-color: hsl(35 90% 55%);
}
Så visas färgerna i webbläsaren

Vanlig text på sidan

Texten använder color: #172026 och sidans bakgrund använder rgb(246 248 247).

Det här är en varningsruta med hsl(35 90% 55%).

Moderna format som oklch och färgrymder som P3 finns också. I kursens början räcker det att du kan hex, RGB och HSL, men det är bra att känna till att färgsystem utvecklas.

En hexkod börjar med # och har sedan tre par tecken: rött, grönt och blått. Varje par går från 00 till FF, vilket motsvarar 0 till 255 i RGB.

  • 40 är röd kanal och betyder 64.
  • A0 är grön kanal och betyder 160.
  • DC är blå kanal och betyder 220.

Därför är #40A0DC samma färg som rgb(64 160 220).

RGB och HSL

rgb() blandar färg med rött, grönt och blått ljus. Varje kanal går från 0 till 255. 0 betyder inget ljus i den kanalen och 255 betyder full styrka. Därför blir rgb(0 0 0) svart, rgb(255 255 255) vitt och rgb(255 0 0) rött.

hsl() beskriver färg på ett annat sätt: hue, saturation och lightness. Hue är färgvinkeln på färghjulet och går från 0 till 360. Röd ligger vid 0 och 360, grön vid 120 och blå vid 240. 270 ligger alltså inte på ren blå, utan mellan blå och magenta. Saturation och lightness skrivs i procent eftersom de beskriver andel: 0% saturation är grått och 100% är fullt mättad färg. 0% lightness är svart, 50% är normal ljushet och 100% är vitt.

Interaktiv färgväljare

Ändra värdena och jämför hur samma färg kan beskrivas med både rgb() och hsl().

Testa färgen

RGB

HSL

background-color: rgb(64 160 220);
background-color: hsl(201 69% 56%);

Kontrast

Text måste ha tillräcklig kontrast mot bakgrunden. I den här övningen ska färgkombinationen nå minst 7:1. Ljusgrå text på vit bakgrund kan se diskret ut, men den blir svår att läsa. Ren röd färg, #FF0000, kan inte nå 7:1 mot någon bakgrund. Testa färger med WebAIM Contrast Checker.

Varför 7:1? WCAG betyder Web Content Accessibility Guidelines. Det är internationella riktlinjer för att göra webbinnehåll mer tillgängligt. WCAG har nivåerna A, AA och AAA, där AAA är den striktaste nivån. För vanlig text kräver WCAG AAA minst 7:1 i kontrast mellan text och bakgrund. Därför använder vi 7:1 som mål här.

Testa textfärg mot bakgrundsfärg
#172026
23
32
38
#FFFFFF
255
255
255
21.00:1 Klarar kravet 7:1. Testa flera kombinationer. Ren röd klarar inte 7:1, men mörkare röd kan fungera.

Exempeltext på en webbsida

Byt färger och kontrollera om texten fortfarande går att läsa utan ansträngning.

Fonter

En font stack ger webbläsaren flera alternativ. Om första fonten saknas används nästa.

body {
    font-family: Arial, Helvetica, sans-serif;
}
Så kan font stacks se ut i webbläsaren

Arial, Helvetica, sans-serif

Webbläsaren testar Arial först. Om Arial saknas testas Helvetica. Om även den saknas används en vanlig sans-serif-font.

Modern system stack

Den här typen av stack använder ofta operativsystemets vanliga gränssnittsfont. Det laddar snabbt och fungerar bra för brödtext.

Vanliga kategorier är sans-serif, serif, monospace, handwriting/cursive och display. Brödtext bör nästan alltid vara lättläst. Dekorativa fonter passar bäst i små mängder.

Google Fonts och modern font stacks

Google Fonts ger många fonter, men kan påverka laddningstid och integritet om fonten laddas från Googles servrar. Modern Font Stacks är ett alternativ där du använder fonter som ofta redan finns på användarens system.

En modern font stack är alltså inte en font du laddar ned. Det är en lista med systemfonter som redan finns på många datorer och mobiler.

body {
    font-family: system-ui, sans-serif;
}

.article {
    font-family: Charter, "Bitstream Charter", "Sitka Text", Cambria, serif;
}

code {
    font-family: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;
}
Testa Modern Font Stacks

System UI

Passar ofta till hela webbplatsens gränssnitt, menyer, knappar och vanlig brödtext.

Webbutveckling handlar inte bara om kod. Val av font påverkar läsbarhet, känsla och hur professionell sidan upplevs.

font-family: system-ui, sans-serif;

Line-height och text-align

line-height styr radavstånd. För brödtext fungerar ofta ett värde runt 1.5.

p {
    line-height: 1.5;
    text-align: left;
}

.intro {
    text-align: center;
}

.meta {
    text-align: right;
}
Så påverkar line-height och text-align texten

text-align: left

Vänsterställd text är oftast lättast att läsa i längre stycken eftersom varje rad börjar på samma plats.

text-align: center

Centrerad text kan fungera för en kort introduktion, en rubrik eller en kort knapptext.

text-align: right

Högerställd text används mer sällan, men kan passa för kort metadata, datum eller siffror.

Vänsterställd text är oftast lättast att läsa på svenska webbsidor. Centrerad text passar bäst för korta rubriker eller mycket korta texter. Högerställd text bör användas sparsamt eftersom längre stycken blir svårare att följa.

Prova själv

  1. Välj två färger till profilsidan: en bakgrundsfärg och en textfärg.
  2. Testa samma färg i färgväljaren med både rgb() och hsl().
  3. Testa kontrasten.
  4. Lägg till en font stack på body.
  5. Sätt line-height: 1.5 på stycketext.