← Nivå 1 – Bygger

Leksjon 9 av 12 ⏱ 30 minutter

Flexbox: en ekte menu

Lær at stille bokse side om side, og din menu vil se ud som fra en ekte nettside.

Jeg viser deg: bokse side om side

Linkene i din menu sidder akkurat nå på siden én etter én, lidt som ord i en setning. En ekte menu har sine punkter pænt stillet op side om side med mellomrum. CSS har et verktøy til at stille bokse op, der heter flexbox:

nav {
  display: flex;    /* this box's children line up side by side */
  gap: 16px;        /* space between them */
}

Det er det. display: flex forteller boksen: “Stil dine børn (linkene her) op i en række.” Og gap setter afstanden mellom dem. Flexbox kan meget mere:

nav {
  display: flex;
  gap: 16px;
  justify-content: center;   /* center children horizontally */
  align-items: center;       /* also align them to the middle vertically */
  flex-wrap: wrap;           /* if they don't fit, wrap to the next line */
}

Jeg viser deg: en menu som en ekte nettside har

La oss kombinere alt, hva du allerede kan, med flexbox:

header {
  background-color: #1d4ed8;   /* a colored bar at the top */
  padding: 16px;
}

header h1 {
  color: white;
  margin: 0;                   /* heading without its default spacing */
}

nav {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 8px;
}

nav a {
  color: white;
  text-decoration: none;       /* remove the underline from links */
  padding: 8px 14px;
  border-radius: 999px;        /* fully rounded ends = a pill shape */
  background-color: rgba(255, 255, 255, 0.15);  /* semi-transparent white */
}

nav a:hover {
  background-color: rgba(255, 255, 255, 0.35);
}

Noe nyt til sidst: :hover betyder “når du holder musen over det”. Menupunktet lyser op, når du holder musen over det – nøyaktig som på nettsider, du kender.

Nå er det din tur 💪

Gjør din menu til en ekte menu: en farget bjælke over hele bredden af headeren, punkter side om side som piller, der lyser op, når du holder musen over dem. Tag farger fra din palet fra leksjon 6.

🏫 Skolenettside – løsning (blå)
header {
  background-color: #1d4ed8;
  padding: 16px;
}

header h1 { color: white; margin: 0; }

nav {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 8px;
}

nav a {
  color: white;
  text-decoration: none;
  padding: 8px 14px;
  border-radius: 999px;
  background-color: rgba(255, 255, 255, 0.15);
}

nav a:hover { background-color: rgba(255, 255, 255, 0.35); }
🙋 Personlig nettside – løsning (orange)

Samme kode, skift bare header-fargen:

header {
  background-color: #ea580c;
  padding: 16px;
}
🌍 Rejsedagbog – løsning (grøn)

Samme kode, skift bare header-fargen:

header {
  background-color: #15803d;
  padding: 16px;
}
⚽ Klubnettside – løsning (klubfarge)

Samme kode, skift bare header-fargen til din klubs:

header {
  background-color: #b91c1c;
  padding: 16px;
}
💡

Vil du have navnet til venstre og menuen til højre på én linje? Pak headeren ind i endnu en flexbox: legg til header { display: flex; justify-content: space-between; align-items: center; }. Egenskaben space-between betyder “skub børnene fra hinanden: den første til venstre, den siste til højre”.

Sjekk deg selv: Der er en farget bjælke øverst på din nettside med et hvidt navn og pilleformede menupunkter, der lyser op, når du holder musen over dem. Husk – fordi CSS er delt, endret menuen sig på alle sider på én gang.

Dette tar du med deg fra leksjonen