What is mobile navigation menu design?

Effektive Burgermenuer til Responsivt Design

17/11/2023

Rating: 3.9 (2875 votes)

I en verden, hvor mobilbrugere udgør en stadigt voksende del af internettrafikken, er det ikke længere et valg, men en nødvendighed, at din hjemmeside er fuldt ud responsiv. En af de største udfordringer ved at tilpasse en hjemmeside til mindre skærme er navigationen. Store, horisontale menuer, der fungerer perfekt på en desktop, kan optage for meget plads på en smartphone eller blive ulæselige og svære at interagere med. Dette er præcis, hvor en burgermenu kommer ind i billedet som en elegant og pladsbesparende løsning. Denne artikel vil dykke ned i, hvad en burgermenu er, hvorfor den er så afgørende for brugeroplevelsen på mobile enheder, og hvordan du implementerer den – både specifikt i WordPress og som en generel CSS-baseret løsning.

Does a Burger appear on a large screen?
However, as the burger is unnecessary for larger screens, where the whole navigation will display, the burger will remain hidden until the screen is adequately small. The burger has three lines, of which we will be styling in the CSS. Right now, they do not appear at all, as they are only empty divs.

Uanset om du foretrækker at arbejde med WordPress’ indbyggede funktioner og tilføje JavaScript for dynamisk adfærd, eller om du søger en mere minimalistisk tilgang udelukkende med HTML og CSS, vil du finde detaljerede instruktioner og kodeeksempler her. Målet er at give dig de nødvendige værktøjer til at skabe en intuitiv og effektiv navigationsløsning, der sikrer, at dine besøgende altid har nem adgang til dit indhold, uanset hvilken enhed de bruger.

Indholdsfortegnelse

Hvad er en Burgermenu, og Hvorfor er den Vigtig?

En burgermenu er en navigationsmenu, der er skjult, indtil brugeren aktiverer den. Den er typisk repræsenteret af et ikon bestående af tre vandrette streger stablet oven på hinanden – et symbol der, som navnet antyder, minder om en hamburger. Når en bruger trykker eller klikker på dette ikon, udfolder menuen sig, ofte med en glidende animation, for at vise de fulde navigationsmuligheder.

Problemet med Traditionelle Menuer på Små Skærme

Traditionelle navigationsmenuer, der er designet til desktop-skærme, kan skabe betydelige problemer på mobile enheder. De kan optage en stor del af skærmens øverste område, presse indholdet ned og tvinge brugeren til at scrolle unødvendigt. Alternativt kan menupunkterne blive så små, at de er svære at læse eller præcist trykke på, hvilket fører til frustration og en dårlig brugeroplevelse. Forestil dig en stor e-handelsbutik med mange kategorier; en fuld menu ville simpelthen overvælde en mobilskærm.

Fordele ved en Burgermenu

Den primære fordel ved en burgermenu er dens evne til at spare plads. Ved at skjule navigationen, indtil den er nødvendig, frigøres værdifuld skærmejendom til dit primære indhold. Dette skaber et renere, mindre rodet layout, som er lettere for mobilbrugere at overskue og interagere med. Desuden sikrer en burgermenu, at alle navigationslinks er tilgængelige, selvom de ikke er synlige ved første øjekast. Dette bevarer den fulde funktionalitet af din hjemmeside på tværs af alle enheder, hvilket er afgørende for en konsistent brugeroplevelse.

Det er vigtigt at bemærke, at selvom nogle diskuterer synligheden af en skjult menu, er burgermenu-ikonet blevet en anerkendt og intuitiv standard for mobilnavigation. De fleste mobilbrugere forstår nu dets formål, hvilket gør det til en effektiv løsning for moderne webdesign.

Implementering af en Burgermenu i WordPress (med JavaScript)

Hvis du bruger WordPress, og ønsker at tilføje en burgermenu til dit tema, har du flere muligheder. Du kan bruge et plugin (f.eks. fra CodeCanyon), men denne sektion vil fokusere på, hvordan du koder en burgermenu direkte ind i dit eget tema, hvilket giver dig fuld kontrol og undgår unødvendige plugins. Denne metode er ideel, hvis du arbejder med et child theme eller et brugerdefineret tema.

Grundlæggende Opsætning og Nødvendige Værktøjer

For at følge denne guide skal du bruge:

  • En udviklingsinstallation af WordPress.
  • En kodeditor (f.eks. VS Code, Sublime Text).
  • Et tema, du kan redigere (husk at oprette et child theme, hvis du bruger et tredjepartstema, for at undgå at miste ændringer ved temaopdateringer).

Vi vil arbejde med den menu, der genereres af WordPress' navigationssystem, og tilpasse den til mobil. Det er vigtigt at undgå forskellige navigationer på desktop og mobil, da dette ofte forringer brugeroplevelsen.

Tilføjelse af Burgermenu-symbolet i header.php

Det første skridt er at tilføje HTML-koden for burgermenu-symbolet til din header.php-fil. Dette symbol skal kun være synligt på mobile enheder. Placer koden inden i <header>-elementet, men uden for selve navigationen:

<div class="right quarter"> <a class="toggle-nav" href="#"> ☰ </a> </div>

er HTML-entiteten for burgermenu-symbolet (☰). I dit tilfælde kan den fulde struktur i header.php se således ud:

<div class="header-bg"> <header role="banner"> <hgroup class="site-name three-quarters left"> <h1 id="site-title" class="one-half-left"> <a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a> </h1> <h2 id="site-description"><?php bloginfo( 'description' ); ?></h2> </hgroup> <div class="right quarter"> <a class="toggle-nav" href="#"> ☰ </a> </div> </header> </div> <nav class="menu main"> <div class="skip-link screen-reader-text"> <a href="#content" title="<?php esc_attr_e( 'Skip to content', 'compass' ); ?>"> <?php _e( 'Skip to content', 'twentyten' ); ?> </a> </div> <?php wp_nav_menu( array( 'container_class' => 'main-nav', 'theme_location' => 'primary' ) ); ?> </nav>

Dette placerer burgermenu-symbolet i headeren, over den primære navigationsmenu.

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:

Styling af Burgermenu-symbolet med CSS

Nu skal vi style .toggle-nav-elementet. Først skal vi skjule det på desktop:

.toggle-nav { display: none !important; }

Derefter skal vi sørge for, at det vises på mobilskærme ved hjælp af en medieforespørgsel. Brug den maksimale bredde, du anvender for dine responsive designs (f.eks. 580px):

@media screen and (max-width: 580px) { .toggle-nav { display: inline-block !important; float: right; margin: 25px; font-size: 2em; transition: color linear 0.15s; } a.toggle-nav:link, a.toggle-nav:visited, a.toggle-nav:hover, a.toggle-nav:active { text-decoration: none; color: #fff; } }

!important sikrer, at stilen ikke overskrives af andre linkstile i dit tema. Dette giver ikonet den rette størrelse, farve og position på mobile enheder.

Styling af Navigationsmenuen til Mobil

Selve navigationsmenuen skal også styles til mobil. Indsæt følgende CSS inden i din medieforespørgsel (samme som ovenfor):

.menu.main { display: inline-block; position: relative; background: #fff; text-align: left; } .menu.main ul { display: none; /* Skjuler menuen som standard */ position: absolute; overflow: auto; top: 0px; right: 0px; z-index: 999; padding-right: 15px; background: #fff; } .menu.main ul li { float: none; display: block; position: relative; top: 0px; right: 0px; min-width: 200px; background: #fff; text-align: right; } .main.menu li:after { content: none; /* Fjerner eventuelle efter-elementer */ }

Nøglepunkterne her er at skjule listen (display: none;) som standard, ændre dens position til absolute, og justere listeelementerne. z-index: 999; sikrer, at menuen vises over andet indhold, når den er synlig. Juster farver og positioner, så de passer til dit temas design.

Tilføjelse af Interaktivitet med JavaScript

For at få menuen til at glide ned, når brugeren klikker på burgermenu-ikonet, skal vi tilføje noget JavaScript. Opret en ny fil kaldet burger-menu.js (f.eks. i en scripts-mappe i dit tema) og indsæt følgende kode:

jQuery(document).ready(function() { jQuery( '.toggle-nav' ).click(function(e) { jQuery( '.menu.main ul' ).slideToggle( 500 ); e.preventDefault(); }); });

Dette script bruger jQuery's slideToggle()-funktion til at vise eller skjule <ul>-elementet inden i .menu.main med en 500ms glidende animation, når der klikkes på .toggle-nav. e.preventDefault() forhindrer, at siden ruller til toppen, da linket har href="#".

Indlæsning af JavaScript-filen i WordPress

For at scriptet skal virke, skal du indlæse det korrekt i WordPress. Åbn din temas functions.php-fil og tilføj følgende funktion:

function tutsplus_burger_menu_scripts() { wp_enqueue_script( 'burger-menu-script', get_stylesheet_directory_uri() . '/scripts/burger-menu.js', array( 'jquery' ) ); } add_action( 'wp_enqueue_scripts', 'tutsplus_burger_menu_scripts' );

Denne kode bruger wp_enqueue_script() til at registrere og indlæse dit script. array('jquery') sikrer, at jQuery er indlæst, før dit script køres, da dit script er afhængig af det. Gem filen, og nu skulle din burgermenu fungere på mobile enheder.

Byg en Responsiv Burgermenu Kun med CSS

Hvis du foretrækker en løsning uden JavaScript, er det fuldt ud muligt at skabe en responsiv burgermenu udelukkende med HTML og CSS. Denne metode udnytter en smart 'hack' med et skjult afkrydsningsfelt og CSS's :checked pseudo-klasse.

Hvorfor en Kun-CSS Løsning?

En kun-CSS burgermenu er ofte lettere og kræver ingen JavaScript-afhængigheder, hvilket kan forbedre sidens ydeevne og gøre den mere robust. Det er en fremragende løsning for enkle slide-out menuer, hvor du ikke har brug for kompleks interaktivitet.

HTML-strukturen for den Kun-CSS Burgermenu

For denne metode skal vi bruge et skjult <input type="checkbox">-element og et <label>-element, der fungerer som vores burgermenu-ikon. Menuen skal placeres inden i <label>-elementet, eller som en søskende, der kan manipuleres af tjekboksen. Her er et eksempel på strukturen:

<input type="checkbox" id="hamburger-input" class="burger-shower" /> <label id="hamburger-menu" for="hamburger-input"> <nav id="sidebar-menu"> <h3>Menu</h3> <ul> <li><a href="#">Hjem</a></li> <li><a href="#">Butik</a></li> <li><a href="#">Blog</a></li> <li><a href="#">Om os</a></li> <li><a href="#">Kontakt</a></li> </ul> </nav> </label> <div class="overlay"></div>

<label>-elementet er bundet til <input> via for="hamburger-input", hvilket betyder, at når du klikker på labelen, ændres tilstanden af afkrydsningsfeltet.

Styling af Burgermenu-ikonet med CSS

Vi kan skabe de tre vandrette streger for burgermenu-ikonet ved hjælp af en CSS linear gradient#hamburger-menu labelen:

#hamburger-menu { width: 50px; height: 50px; display: block; border: none; background: linear-gradient( to bottom, #3D0E61, #3D0E61 20%, white 20%, white 40%, #3D0E61 40%, #3D0E61 60%, white 60%, white 80%, #3D0E61 80%, #3D0E61 100% ); position: fixed; /* For at holde den synlig */ top: 20px; left: 20px; z-index: 1000; /* Sørg for at den er over indhold */ }

Dette skaber et 50x50px ikon med tre lilla streger på en hvid baggrund, der minder om en burger.

Positionering af Menuen Uden for Skærmen

Menuen (#sidebar-menu) skal som standard være skjult og positioneret uden for skærmen. Vi giver den en position: fixed;, så den forbliver på plads, når brugeren scroller.

What is a hamburger menu?
#hamburger-menu #sidebar-menu { visibility: hidden; position: fixed; top: 0; left: -250px; /* Flyt den 250px ud til venstre */ width: 200px; height: 100%; transition: 0.3s; /* Tilføj overgang for animation */ background: #f0f0f0; /* Eksempel baggrundsfarve */ padding-top: 60px; /* Plads til burgerikonet */ box-shadow: 2px 0 5px rgba(0,0,0,0.5); }

visibility: hidden; skjuler elementet, mens left: -250px; flytter det helt ud af syne. transition: 0.3s; forbereder menuen på en glidende animation, når den bliver synlig.

Tilføjelse af Funktionalitet med :checked Pseudo-klassen

Nu kommer kernen i den kun-CSS løsning: brugen af :checked pseudo-klassen og CSS-søskende-vælgere (+ for umiddelbar søskende og ~ for generel søskende) til at vise menuen og en overlay-effekt.

#hamburger-input:checked + #hamburger-menu #sidebar-menu { visibility: visible; left: 0; /* Flytter menuen ind på skærmen */ } #hamburger-input:checked ~ .overlay { visibility: visible; opacity: 0.4; /* Gør overlayet delvist gennemsigtigt */ } .overlay { visibility: hidden; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #000; opacity: 0; transition: opacity 0.3s; z-index: 998; }

Når #hamburger-input er tjekket (fordi brugeren har klikket på dens label #hamburger-menu), vil #sidebar-menu blive synlig (visibility: visible;) og flytte sig ind på skærmen (left: 0;). Et semi-transparent overlay (.overlay) vises også for at indikere, at menuen er åben og for at fange klik uden for menuen, så den kan lukkes. transition: 0.3s; på både menuen og overlayet giver en flydende animation.

Gør Burgermenuen Responsiv med Medieforespørgsler

For at sikre, at den fulde navigationslinje vises på større skærme, og burgermenuen kun vises på mindre skærme, bruger vi medieforespørgsler. Først opretter vi en standard horisontal navigationslinje:

#main-menu { display: block; height: 100px; width: 100%; background: #3D0E61; margin: 0px; } #main-menu ul { max-width: 800px; width: 100%; height: 100%; margin: 0px auto; display: flex; justify-content: space-evenly; align-items: center; } #main-menu li { list-style-type: none; font-size: 2rem; } #main-menu a { color: #B9FAF8; font-size: 1.5rem; text-decoration: none; } #main-menu a:hover { text-decoration: underline; }

Derefter bruger vi en medieforespørgsel til at skifte mellem de to navigationstyper ved et bestemt breakpoint (f.eks. 750px):

@media screen and (max-width: 750px) { #main-menu { display: none; /* Skjul den fulde menu på små skærme */ } #hamburger-menu { display: inline; /* Vis burgermenu-ikonet på små skærme */ } } @media screen and (min-width: 751px) { #hamburger-input, #hamburger-menu, #sidebar-menu, .overlay { display: none !important; /* Skjul burgermenu-komponenter på store skærme */ } }

Dette sikrer, at kun én navigationstype er synlig ad gangen, hvilket skaber en problemfri overgang mellem desktop- og mobilvisninger.

Sammenligning: JavaScript vs. Kun CSS Løsninger

Valget mellem en JavaScript-drevet og en kun-CSS burgermenu afhænger af dine specifikke behov og præferencer:

FunktionJavaScript-løsningKun CSS-løsning
KompleksitetKræver kendskab til JavaScript/jQuery.Kræver kun HTML og CSS (avancerede vælgere).
YdeevneKan potentielt være tungere pga. JS-afhængighed.Typisk lettere, bedre for ydeevne (ingen JS-parsing).
FleksibilitetMeget fleksibel, kan implementere komplekse animationer og logik.Mindre fleksibel, begrænset til CSS-egenskaber og pseudo-klasser.
BrowserkompatibilitetMeget bred, da jQuery er veletableret.God, men nogle ældre browsere kan have begrænset understøttelse af avancerede CSS-vælgere.
VedligeholdelseKræver vedligeholdelse af både HTML, CSS og JS.Kun HTML og CSS, potentielt nemmere at vedligeholde for enkle menuer.
AnvendelseAnbefales til WordPress-brugere og dem, der har brug for dynamisk adfærd.Ideel til minimalistiske projekter, eller hvor JS skal undgås.

For de fleste WordPress-brugere, der allerede anvender jQuery, vil den JavaScript-baserede tilgang være den mest ligetil. For udviklere, der stræber efter den mest slanke og JS-fri løsning, er kun-CSS-metoden et fremragende valg.

Ofte Stillede Spørgsmål om Burgermenuer

Viser en Burgermenu sig på store skærme?

Nej, en burgermenu er designet til at optimeres til små skærme, typisk mobiltelefoner og tablets. På større skærme, såsom desktops og laptops, vil den traditionelle, fulde navigationsmenu normalt være synlig. Medieforespørgsler i CSS bruges til at styre, hvornår burgermenu-ikonet og den tilhørende menu skal vises, og hvornår den fulde navigationslinje skal vises. Dette sikrer, at brugeren altid får den mest passende navigation for deres skærmstørrelse.

Hvordan opretter man en responsiv burgermenu trin-for-trin?

Processen for at oprette en responsiv burgermenu involverer generelt følgende trin:

  1. HTML-struktur: Opret HTML for både burgermenu-ikonet (tre linjer) og selve navigationsmenuen. Menuen kan være en standard <ul>-liste. For den kun-CSS-løsning skal du også inkludere et skjult <input type="checkbox"> og en <label>.
  2. CSS – Skjul på Desktop: Brug CSS til at skjule burgermenu-ikonet og dens tilhørende mobilmenu som standard på desktop-skærme. Den fulde navigationsmenu skal være synlig her.
  3. CSS – Vis på Mobil: Brug en medieforespørgsel (f.eks. @media screen and (max-width: 768px)) til at:
    • Skjule den fulde desktop-menu.
    • Gøre burgermenu-ikonet synligt.
    • Positionere mobilmenuen uden for skærmen (f.eks. med left: -100%; eller transform: translateX(-100%);) og gøre den usynlig (visibility: hidden; eller opacity: 0;).
    • Tilføje CSS transition-egenskaber for at skabe glidende animationer, når menuen åbnes/lukkes.
  4. JavaScript (valgfrit/WordPress): Hvis du bruger JavaScript (som i WordPress-eksemplet), skal du skrive et script, der lytter efter klik på burgermenu-ikonet. Når der klikkes, skal scriptet tilføje eller fjerne en CSS-klasse fra menuen (f.eks. .show), som ændrer dens position og synlighed til at glide ind på skærmen. Husk at indlæse scriptet korrekt (f.eks. med wp_enqueue_script i WordPress).
  5. CSS (Kun-CSS-løsning): Hvis du bruger kun-CSS-løsningen, skal du style din <label> til at ligne et burgermenu-ikon. Brug #input-id:checked + #label-id menu { ... } og #input-id:checked ~ .overlay { ... } til at vise menuen og overlayet, når afkrydsningsfeltet er tjekket.
  6. Test: Test din burgermenu grundigt på forskellige skærmstørrelser og enheder for at sikre, at den fungerer korrekt og giver en god brugeroplevelse.

Konklusion

At implementere en burgermenu er en fundamental del af moderne responsivt webdesign. Den løser effektivt udfordringerne ved navigation på små skærme ved at frigøre plads og samtidig opretholde fuld funktionalitet. Uanset om du vælger en JavaScript-baseret løsning for WordPress eller en elegant kun-CSS tilgang, vil en veludført burgermenu forbedre din hjemmesides brugervenlighed markant og sikre, at dine besøgende altid har en positiv oplevelse.

Ved at følge de trin, der er beskrevet i denne artikel, kan du med tillid implementere en effektiv og æstetisk tiltalende burgermenu, der bidrager til en fremragende brugeroplevelse på tværs af alle enheder. Husk at teste grundigt og tilpasse designet, så det passer perfekt til dit temas udseende og fornemmelse.

Hvis du vil læse andre artikler, der ligner Effektive Burgermenuer til Responsivt Design, kan du besøge kategorien Mobil.

Go up