What is a hamburger menu?

Hamburger Menuen: Din Guide til Mobil Navigation

16/11/2022

Rating: 4.37 (15081 votes)

I en verden hvor mobiltelefoner, som din iPhone, er den primære måde at tilgå internettet på, er effektiv og intuitiv navigation mere kritisk end nogensinde før. Skærmpladsen er begrænset, og behovet for en ren og overskuelig brugerflade er altafgørende. Her kommer hamburger menuen ind i billedet – en klassisk og udbredt UI-funktion, der elegant løser udfordringen med at vise og skjule et navigationssystem. Denne artikel vil dykke ned i, hvad en hamburger menu er, hvorfor den er så vigtig for mobile enheder, og hvordan du selv kan konstruere den ved hjælp af HTML, CSS og JavaScript.

What is a ham button in JavaScript?
button - This is a button that displays as the hamburger menu. When the user clicks it, the function ➼ toggle () is executed and the menu will appear. When it is clicked again, the menu disappears. This button will only display on small devices. In our CSS and JavaScript, we can refer to it by the ID ➼ham-button or the class ➼ ham-button.

Uanset om du er en erfaren udvikler eller blot nysgerrig på, hvordan moderne websites fungerer, vil denne guide give dig en grundig forståelse af hamburger menuens anatomi og funktion. Vi vil udforske dens opbygning trin for trin, fra den grundlæggende HTML-struktur til den dynamiske JavaScript-logik, der bringer den til live. Målet er at udstyre dig med viden og værktøjer til at skabe en responsiv og brugervenlig navigationsløsning, der optimerer brugeroplevelsen på tværs af alle enheder.

Indholdsfortegnelse

Hvad er en Hamburger Menu?

En hamburger menu er et ikon bestående af tre vandrette linjer, der er stablet oven på hinanden. Dette ikon symboliserer en skjult menu, og når brugeren klikker eller trykker på det, foldes menuen ud og viser dens indhold, typisk en liste over navigationslinks. Når menuen er synlig, ændres ikonet ofte til et 'X' (kryds) for at indikere, at et klik vil lukke menuen igen. Navnet 'hamburger' stammer fra den visuelle lighed med en burgerbolle, en bøf og endnu en burgerbolle.

Dette ikon blev oprindeligt designet af Norm Cox i 1981 til en tidlig grafisk brugerflade hos Xerox Star og er siden blevet et allestedsnærværende element i webdesign, især populært på mobile platforme. Dens primære formål er at spare skærmplads og give en mere minimalistisk og ren æstetik. I stedet for at have en lang liste af links konstant synlig, kan de skjules og kun vises, når de er nødvendige, hvilket er særligt fordelagtigt på små skærme.

Hvorfor er Hamburger Menuen Afgørende for Mobilenheder (som iPhone)?

Den begrænsede skærmplads på smartphones som iPhone er den primære årsag til hamburger menuens udbredelse. På en desktop-computer er der rigelig plads til at vise en fuld navigationslinje med mange links, men på en mobilskærm ville dette hurtigt overvælde brugeren og forringe læsbarheden af indholdet. Hamburger menuen tillader udviklere at pakke et omfattende navigationssystem ind i et lille, diskret ikon, hvilket frigør værdifuld plads til selve indholdet.

For iPhone-brugere betyder dette en mere strømlinet og behagelig browsingoplevelse. I stedet for at skulle scrolle gennem en lang række links øverst på siden, kan de fokusere på artiklens tekst, billeder eller videoer. Når navigation er nødvendig, er menuen kun et tryk væk. Dette bidrager til en bedre brugervenlighed og reducerer den kognitive belastning for brugeren. Desuden understøtter hamburger menuen principperne for responsivt webdesign, hvor layoutet automatisk tilpasser sig skærmstørrelsen. På større skærme kan en traditionel navigationslinje vises, mens den på mindre skærme automatisk omdannes til en hamburger menu.

Opbygning af en Hamburger Menu: HTML-strukturen

Grundlaget for enhver webkomponent er dens HTML-struktur. For en hamburger menu har vi brug for to hovedelementer: selve navigationsmenuen og knappen, der aktiverer den. Vi vil bruge en uordnet liste (ul) til menuen og en button til hamburger-ikonet.

Den grundlæggende struktur kunne se således ud:

<ul class="menu"> <li><a class="menuItem" href="#">Hjem</a></li> <li><a class="menuItem" href="#">Profil</a></li> <li><a class="menuItem" href="#">Om os</a></li> <li><a class="menuItem" href="#">Kontakt</a></li> </ul> <button class="hamburger"> <i class="menuIcon material-icons">menu</i> <i class="closeIcon material-icons">close</i> </button>

Her har vi en liste med klassen menu og individuelle links med klassen menuItem. Knappen med klassen hamburger indeholder to ikoner: et 'menu'-ikon (de tre streger) og et 'close'-ikon (krydset). Vi bruger ofte ikonbiblioteker som Google Material Icons for nemt at inkludere disse visuelle elementer. Ved at give dem separate klasser (menuIcon og closeIcon) kan vi nemt styre deres synlighed med CSS og JavaScript.

Det er vigtigt at bemærke, at <i>-elementer her bruges som et semantisk neutralt element til ikoner, ofte kombineret med et ikon-fontbibliotek. For at Material Icons kan fungere, skal du inkludere deres CDN i <head>-sektionen af din HTML:

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

Denne struktur er fleksibel og kan tilpasses med så mange menupunkter, som dit website kræver.

Styling af Hamburger Menuen med CSS

Når HTML-strukturen er på plads, er næste skridt at style elementerne med CSS for at opnå det ønskede udseende og den ønskede adfærd. Vi skal positionere knappen, skjule menuen som standard og forberede den til animation.

Først styler vi hamburger-knappen:

.hamburger { position: fixed; z-index: 100; top: 1rem; right: 1rem; padding: 4px; border: black solid 1px; background: white; cursor: pointer; }

position: fixed; sikrer, at knappen forbliver på samme sted på skærmen, selv når brugeren scroller. z-index: 100; placerer den øverst på alle andre elementer. top og right placerer den i øverste højre hjørne. cursor: pointer; giver en visuel indikation af, at elementet kan klikkes.

Som standard ønsker vi, at 'close'-ikonet skal være skjult, da menuen er skjult:

.closeIcon { display: none; }

Nu til selve menuen. Den skal som standard være skjult og dække hele skærmen, når den vises:

.menu { position: fixed; transform: translateY(-100%); transition: transform 0.2s ease-out; top: 0; left: 0; right: 0; bottom: 0; z-index: 99; background: black; color: white; list-style: none; padding-top: 4rem; display: flex; flex-direction: column; justify-content: center; align-items: center; }

position: fixed; og top: 0; left: 0; right: 0; bottom: 0; får menuen til at dække hele viewporten. transform: translateY(-100%); skjuler menuen ved at flytte den 100% opad uden for skærmen. transition: transform 0.2s ease-out; tilføjer en glat animation, når menuen bevæger sig ind og ud af syne. z-index: 99; placerer menuen lige under hamburger-knappen. Resten af stilen (background, color, list-style, padding-top, display: flex osv.) er for at give menuen et pænt udseende, når den er synlig.

For at vise menuen, definerer vi en ny klasse:

.showMenu { transform: translateY(0); }

Denne klasse vil blive tilføjet og fjernet fra menuen via JavaScript, hvilket får den til at glide ned på plads eller skjule sig igen.

What is a hamburger menu?
A hamburger menu is a classic UI feature present in countless websites. It's used to show and hide a menu on click, especially used in mobile design. In this tutorial, we'll learn to create a hamburger menu with HTML, CSS and Javascript. Here's the HTML:

Gør Hamburger Menuen Interaktiv med JavaScript

JavaScript er hjernen bag hamburger menuens interaktivitet. Det er her, vi håndterer klikhændelser og manipulerer DOM'en for at skifte mellem at vise og skjule menuen samt skifte ikoner.

Først skal vi hente referencer til de relevante HTML-elementer:

const menu = document.querySelector(".menu"); const menuItems = document.querySelectorAll(".menuItem"); const hamburger= document.querySelector(".hamburger"); const closeIcon= document.querySelector(".closeIcon"); const menuIcon = document.querySelector(".menuIcon");

Dernæst opretter vi en funktion, der håndterer visning og skjulning af menuen:

function toggleMenu() { if (menu.classList.contains("showMenu")) { menu.classList.remove("showMenu"); closeIcon.style.display = "none"; menuIcon.style.display = "block"; } else { menu.classList.add("showMenu"); closeIcon.style.display = "block"; menuIcon.style.display = "none"; } }

Denne toggleMenu() funktion tjekker, om menuen allerede har klassen showMenu. Hvis den har det, fjerner den klassen (skjuler menuen) og skifter ikonerne tilbage til 'menu'-ikonet. Hvis den ikke har klassen, tilføjer den den (viser menuen) og skifter ikonerne til 'close'-ikonet.

Endelig skal vi lytte efter klik på hamburger-knappen og menupunkterne:

hamburger.addEventListener("click", toggleMenu); menuItems.forEach(function(menuItem) { menuItem.addEventListener("click", toggleMenu); });

Når hamburger-knappen klikkes, kaldes toggleMenu(). Når et menupunkt inde i den åbne menu klikkes, kaldes toggleMenu() også, hvilket automatisk lukker menuen, da brugeren har foretaget et valg. Dette skaber en flydende og intuitiv navigation.

Fordele og Ulemper ved Hamburger Menuer

Selvom hamburger menuen er bredt anerkendt og brugt, er den ikke uden sine diskussioner. Det er vigtigt at afveje fordele og ulemper:

FordeleUlemper
Sparer skærmplads på små enhederKan skjule vigtig navigation
Giver et rent og minimalistisk designKræver et ekstra klik for at tilgå navigation
Forbedrer fokus på indholdIkke altid intuitiv for nye brugere
Standardiseret og genkendelig UI-mønsterKan reducere opdageligheden af indhold

For mobile enheder, som iPhone, opvejer fordelene ofte ulemperne, da skærmplads er en så afgørende faktor. For websites, der er meget afhængige af, at brugerne hurtigt finder specifikke sektioner, kan det dog være værd at overveje alternativer eller supplerende navigationsmønstre, såsom en bottom navigation bar, der er populær i mange iOS-apps.

Bedste Praksis for Brug af Hamburger Menuer

For at sikre, at din hamburger menu er så effektiv og brugervenlig som muligt, er her nogle bedste praksis:

  • Placering: Placer altid hamburger ikonet i et forventet område, typisk øverst til højre eller øverst til venstre på skærmen. Dette er, hvor brugere intuitivt vil lede efter det.
  • Visuel Feedback: Sørg for, at ikonet ændrer sig (f.eks. til et 'X') når menuen er åben. Dette giver klar visuel feedback om menuens tilstand.
  • Animation: Brug subtile animationer (som transition i CSS) for at gøre åbning og lukning af menuen glat og behagelig. Undgå overdrevne eller langsomme animationer.
  • Tilgængelighed: Overvej brugere med særlige behov. Sørg for, at menuen er navigerbar med tastatur (brug <button> elementet og ARIA-attributter som aria-expanded).
  • Indhold i Menuen: Hold menupunkterne klare, koncise og organiserede. Undgå at overfylde menuen med for mange valgmuligheder. Overvej at gruppere relaterede links.
  • Lukning efter Klik: Som vist i vores JavaScript-eksempel, bør menuen lukke automatisk, når en bruger klikker på et menupunkt. Dette forbedrer flowet i brugeroplevelsen.
  • Responsivitet: Implementer menuen, så den kun vises på mindre skærme, og en fuld navigationslinje vises på større skærme. Dette er kernen i responsivt webdesign.

Ofte Stillede Spørgsmål (FAQ)

Hvad er forskellen på en hamburger menu og en traditionel navigationslinje?

En traditionel navigationslinje viser alle menupunkter synligt på skærmen, typisk øverst på siden. En hamburger menu skjuler menupunkterne bag et ikon (tre vandrette linjer) og afslører dem først, når ikonet klikkes. Hamburger menuen bruges primært på mobile enheder for at spare skærmplads, mens den traditionelle linje er mere almindelig på desktop.

Er hamburger menuen altid det bedste valg for mobil navigation?

Ikke nødvendigvis. Mens den er meget udbredt og effektiv til at spare plads, kan den reducere opdageligheden af visse menupunkter, da de er skjult. For apps og websites med meget få, men kritisk vigtige navigationspunkter, kan en 'bottom navigation bar' (som ofte ses i iOS-apps) eller en 'tab bar' være et bedre alternativ, da disse holder de vigtigste funktioner synlige.

Hvordan sikrer jeg, at min hamburger menu er tilgængelig for alle brugere?

For at sikre tilgængelighed bør du bruge semantisk korrekt HTML (f.eks. et <button> element for klikfunktionen), tilføje ARIA-attributter (f.eks. aria-controls og aria-expanded) for at informere skærmlæsere om menuens tilstand, og sikre, at menuen kan navigeres med tastatur (f.eks. ved at bruge Tab-tasten).

Kan jeg tilpasse udseendet af min hamburger menu?

Absolut! Med CSS kan du tilpasse farver, skrifttyper, størrelser, animationer og placering af både ikonet og den udfoldede menu. De eksempler, vi har gennemgået, giver et grundlag, men du kan slippe din kreativitet løs for at matche dit websites design.

Hvor mange menupunkter bør en hamburger menu indeholde?

Der er ingen fast regel, men det er bedst at holde antallet af menupunkter til et minimum – ideelt set færre end ti toplevel-punkter. Hvis du har for mange, kan det blive overvældende, selv når menuen er udfoldet. Overvej at bruge underkategorier eller et 'mere'-punkt, hvis nødvendigt.

Konklusion

Hamburger menuen er en essentiel komponent i moderne webdesign, især når det kommer til at levere en optimal brugeroplevelse på mobile enheder som iPhone. Ved at forstå dens grundlæggende HTML-struktur, dens styling med CSS og dens dynamiske funktionalitet via JavaScript, kan du skabe en responsiv og intuitiv navigationsløsning, der effektivt udnytter den begrænsede skærmplads.

Uanset om du udvikler et nyt website eller optimerer et eksisterende, vil en velimplementeret hamburger menu forbedre dit sites brugervenlighed og æstetik markant. Husk altid at fokusere på brugerens behov og teste din menu på forskellige enheder for at sikre den bedste ydeevne.

Hvis du vil læse andre artikler, der ligner Hamburger Menuen: Din Guide til Mobil Navigation, kan du besøge kategorien Mobil.

Go up