How to create a dropdown menu using bootstrap?

Bootstrap 5 Dropdowns: Skab Dynamiske Menuer

16/11/2024

Rating: 4.6 (1390 votes)

I den moderne webudvikling er en intuitiv og responsiv brugerflade afgørende for en god brugeroplevelse. Navigationsmenuer spiller en central rolle heri, og Bootstrap 5 tilbyder kraftfulde og fleksible værktøjer til at skabe netop dette. Blandt disse værktøjer skinner dropdown-menuen som en alsidig komponent, der kan organisere indhold og funktionalitet på en overskuelig måde. Denne artikel vil dykke ned i, hvad Bootstrap-dropdowns er, hvordan de oprettes, og hvordan de integreres sømløst i en responsiv navigationslinje.

How to create a navbar in Bootstrap 5?
1. First of all, load the Bootstrap 5 CSS by adding the following CDN link into the head tag of your webpage. 2. After that, create the HTML structure for the navbar as follows. Add your own logo and modify the menu items according to your website. Dropdown Dropdown Dropdown Dropdown 3. Now, use the following CSS code to style the navbar.

Uanset om du er en erfaren udvikler eller ny inden for Bootstrap, vil denne guide give dig den nødvendige viden til at mestre dropdown-menuernes verden. Vi vil udforske deres struktur, tilpasningsmuligheder, og hvordan de sikrer optimal tilgængelighed for alle brugere. Gør dig klar til at løfte din hjemmesides navigation til nye højder!

Indholdsfortegnelse

Hvad er Bootstrap Dropdowns?

Bootstrap-dropdowns er interaktive, kontekstuelle overlays designet til at vise lister over links, handlinger eller mere komplekst indhold. De er et essentielt element i mange webapplikationer og hjemmesider, da de hjælper med at spare plads på skærmen og præsentere information på en organiseret måde. Forestil dig en menu, der foldes ud, når du klikker på en knap eller et link – det er kernen i en dropdown.

Disse menuer er gjort interaktive ved hjælp af Boostraps inkluderede JavaScript-plugin. Det er vigtigt at bemærke, at dropdowns i Bootstrap 5 aktiveres ved et klik, ikke ved at holde musen over dem (hover). Dette er en bevidst designbeslutning, der forbedrer brugervenligheden, især på touch-enheder, hvor 'hover' ikke eksisterer på samme måde som på desktop.

Under motorhjelmen er Bootstrap-dropdowns bygget på et tredjepartsbibliotek kaldet Popper.js. Popper.js leverer dynamisk positionering og viewport-detektion, hvilket sikrer, at din dropdown-menu altid vises korrekt og inden for skærmens grænser, uanset hvor på siden den er placeret. Dette er afgørende for en flydende og problemfri brugeroplevelse.

Tilgængelighed og Brugervenlighed

Bootstrap lægger stor vægt på tilgængelighed, og dropdown-komponenterne er ingen undtagelse. Selvom Bootstrap ikke automatisk tilføjer alle de WAI ARIA-attributter, der kræves for ægte applikationslignende menuer (da Bootstrap-dropdowns er designet til at være mere generiske og kan indeholde diverse indhold som formularer), understøtter det indbygget standard tastaturinteraktioner. Dette inkluderer muligheden for at navigere gennem individuelle menupunkter med piletasterne og lukke menuen med ESC-tasten. For at opnå den bedst mulige tilgængelighed, bør udviklere selv tilføje mere specifikke ARIA-attributter, hvor det er relevant.

Sådan Skaber du Dropdown-Menuer

At oprette en grundlæggende dropdown-menu i Bootstrap er ligetil. Du skal indpakke dropdown-udløseren (en knap eller et link) og dropdown-menuen inden i et element med klassen .dropdown (eller et andet element, der deklarerer position: relative;). Dette sikrer korrekt positionering.

Grundlæggende Struktur

For at oprette en enkel knap-baseret dropdown, kan du bruge følgende struktur. Husk at inkludere Bootstrap CSS i din <head>-tag og JavaScript-bundtet (som inkluderer Popper.js) lige før din afsluttende </body>-tag for at aktivere funktionaliteten.

Does bootstrap have a navbar?

Et eksempel med en knap:

<div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown knap </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> <li><a class="dropdown-item" href="#">Handling 1</a></li> <li><a class="dropdown-item" href="#">Handling 2</a></li> <li><a class="dropdown-item" href="#">Noget andet her</a></li> </ul> </div>

Her er data-bs-toggle="dropdown" afgørende for at aktivere JavaScript-funktionaliteten, mens aria-expanded="false" er en vigtig ARIA-attribut for tilgængelighed, der indikerer, om menuen er åben eller lukket.

Du kan også oprette en dropdown udløst af et link:

<div class="dropdown"> <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown link </a> <ul class="dropdown-menu" aria-labelledby="dropdownMenuLink"> <li><a class="dropdown-item" href="#">Handling 1</a></li> <li><a class="dropdown-item" href="#">Handling 2</a></li> <li><a class="dropdown-item" href="#">Noget andet her</a></li> </ul> </div>

Typer af Dropdowns

Udover de simple knap- og link-dropdowns tilbyder Bootstrap også 'split button' dropdowns, som giver en mere kompleks interaktion.

Enkelt Knap Dropdown

Dette er den mest almindelige type, hvor en enkelt knap både fungerer som udløser og visuel indikator for dropdown-menuen. Den er ideel, når den primære handling er at åbne menuen.

Opdelt Knap Dropdown (Split Button)

En split button dropdown består af to dele: en primær knap til en direkte handling og en separat dropdown-udløser med en pil. Denne type er nyttig, når du har en standardhandling (f.eks. 'Gem') og yderligere relaterede handlinger, der vises i dropdown-menuen (f.eks. 'Gem som', 'Gem og luk'). For at opnå dette bruges klassen .dropdown-toggle-split, som reducerer den horisontale polstring omkring pilen for et mere æstetisk udseende.

TypeBeskrivelseAnvendelsesområde
Enkelt knapÉn knap udløser dropdown-menuen.Standard navigation, simple valgmenuer.
Opdelt knapEn primær knap til handling + en separat knap til dropdown.Kontekstuelle handlinger, hvor der er en standardhandling og flere relaterede muligheder.

Størrelser og Farver

Bootstrap-dropdowns kan tilpasses til at matche din hjemmesides æstetik og layout. De kan skaleres med knapper i alle størrelser ved at tilføje .btn-lg for store knapper eller .btn-sm for små knapper til din dropdown-udløser.

For at matche et mørkt tema eller navigationslinje kan du nemt gøre dropdown-menuen mørk ved at tilføje klassen .dropdown-menu-dark til .dropdown-menu-elementet. Dette ændrer baggrunds- og tekstfarverne for at give en bedre kontrast i mørke omgivelser.

Placering og Retning

Som standard åbner en dropdown-menu sig 100% under og langs venstre side af sit forælderelement. Bootstrap giver dog fleksibilitet til at ændre denne adfærd med forskellige retningsklasser:

  • Dropup: Menuen åbner sig over udløseren ved at tilføje .dropup til forælderelementet.
  • Dropright (Dropend): Menuen åbner sig til højre for udløseren ved at tilføje .dropend til forælderelementet.
  • Dropleft (Dropstart): Menuen åbner sig til venstre for udløseren ved at tilføje .dropstart til forælderelementet.

Disse retninger er også spejlet, når Bootstrap anvendes i et RTL (Right-to-Left) sprogmiljø.

What are the best tips for effective mobile navigation?
Here are seven best practice tips for effective mobile navigation. 1. Keep Menus Short and Sweet When it comes to menus on mobile websites, less really is more. If you overload the menu options, users will be faced with decision paralysis as they try to decide which option they require. Remember, they’re after instant information.

Menu Justering

Du kan også styre justeringen af dropdown-menuen. Ved at tilføje .dropdown-menu-end til .dropdown-menu vil menuen blive højrejusteret. For responsiv justering, hvor menuens justering ændrer sig ved specifikke breakpoints, kan du bruge klasser som .dropdown-menu-lg-end. Det er vigtigt at deaktivere dynamisk positionering ved at tilføje data-bs-display="static"-attributten, når du bruger responsiv justering, da Popper.js ellers vil overstyre din justering. Dog er dette ikke nødvendigt for dropdowns i navigationslinjer, da Popper.js ikke bruges til deres positionering.

Indhold i Dropdown-Menuer

Dropdown-menuer kan indeholde mere end blot simple links. Bootstrap giver dig mulighed for at inkludere forskellige typer indhold for at skræddersy din menu til specifikke behov.

  • Menuemner: Brug <a> eller <button> elementer med klassen .dropdown-item.
  • Ikke-interaktive elementer: Brug .dropdown-item-text til tekst, der ikke er et link eller en knap, men stadig en del af menuen.
  • Aktive og deaktiverede elementer: Tilføj .active til et element for at markere det som aktivt, og brug aria-current="page" eller aria-current="true" for tilgængelighed. For at deaktivere et menupunkt, tilføj .disabled, sammen med tabindex="-1" og aria-disabled="true".
  • Overskrifter: Brug <h6 class="dropdown-header"> til at opdele menuen i sektioner.
  • Adskillere: En vandret linje (<hr class="dropdown-divider">) kan bruges til at adskille grupper af relaterede menupunkter.
  • Fritekst og formularer: Du kan placere stort set enhver form for indhold, herunder formularer, inden i en dropdown-menu. Brug polstring og margin-klasser til at styre layoutet.

Dropdowns i Navigationslinjer (Navbars)

En af de mest almindelige og effektive anvendelser af dropdowns er i navigationslinjer. Bootstrap 5 gør det nemt at skabe en responsiv navigationslinje med kollapsende menuer og dropdown-elementer, der tilpasser sig forskellige skærmstørrelser.

For at opbygge en responsiv navigationslinje med dropdown-funktionalitet skal du inkludere Bootstrap CSS og JavaScript som beskrevet tidligere. Her er den grundlæggende HTML-struktur:

<nav class="navbar navbar-expand-lg navbar-dark" style="background-color: salmon;"> <div class="container-fluid"> <a class="navbar-brand fw-bold" href="#">Dit Logo</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Hjem</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Dropdown Menu </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="#">Kategori A</a></li> <li><a class="dropdown-item" href="#">Kategori B</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="#">Mere info</a></li> </ul> </li> <li class="nav-item"> <a class="nav-link">Om os</a> </li> </ul> <form class="d-flex" role="search"> <input class="form-control me-2" type="search" placeholder="Søg" aria-label="Search"> <button class="btn btn-outline-light" type="submit">Søg</button> </form> </div> </div> </nav>

Dette eksempel viser en standard navigationslinje med et logo, en navbar-toggler knap (som kollapser menuen på mindre skærme), og en .dropdown inden i .navbar-nav. Klasser som navbar-expand-lg definerer, hvornår navigationslinjen skal udvides fuldt ud (her ved large breakpoints og opefter), hvilket er nøglen til at skabe et responsivt design.

Inkludering af Bootstrap CDN'er

For at sikre, at din Bootstrap-funktionalitet fungerer korrekt, skal du inkludere de nødvendige CDN-links. Placer Bootstrap CSS i din <head>-tag:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css">

Og placer Bootstrap JavaScript (som inkluderer Popper.js) lige før din afsluttende </body>-tag:

<script src='https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.3/js/bootstrap.min.js'></script>

Avancerede Funktioner og Muligheder

Bootstrap-dropdowns tilbyder yderligere muligheder for finjustering af adfærd og positionering.

Dropdown Indstillinger

Du kan ændre dropdown-menuens placering ved hjælp af data-bs-offset eller data-bs-reference attributter. data-bs-offset="10,20" vil f.eks. flytte dropdown-menuen 10px mod højre og 20px ned fra udløseren.

How to create a responsive grid in Bootstrap 5?

Auto-Luk Adfærd

Som standard lukker en dropdown-menu, når du klikker både udenfor og indenfor menuen. Du kan styre denne adfærd med data-bs-auto-close attributten:

  • data-bs-auto-close="true" (standard): Lukker ved klik udenfor eller indenfor.
  • data-bs-auto-close="false": Lukker kun ved klik på udløserknappen eller manuelt kald af hide/toggle metoden. Lukkes ikke med ESC-tasten.
  • data-bs-auto-close="inside": Lukker kun ved klik indenfor dropdown-menuen.
  • data-bs-auto-close="outside": Lukker kun ved klik udenfor dropdown-menuen.

JavaScript Metoder og Events

For mere dynamisk kontrol kan du interagere med dropdowns via JavaScript. Du kan f.eks. manuelt vise, skjule eller skifte status for en dropdown. Her er nogle nøglemetoder:

  • toggle(): Skifter dropdown-menuens synlighed.
  • show(): Viser dropdown-menuen.
  • hide(): Skjuler dropdown-menuen.
  • update(): Opdaterer positionen af en dropdown.
  • dispose(): Ødelægger en dropdown-instans (fjerner gemte data på DOM-elementet).
  • getInstance(element): Henter dropdown-instansen knyttet til et DOM-element.
  • getOrCreateInstance(element): Henter eller opretter en ny dropdown-instans.

Dropdowns udløser også specifikke events, som du kan lytte efter for at udføre brugerdefinerede handlinger:

  • show.bs.dropdown: Udløses umiddelbart når show metoden kaldes.
  • shown.bs.dropdown: Udløses når dropdown'en er blevet synlig for brugeren, og CSS-overgange er færdige.
  • hide.bs.dropdown: Udløses umiddelbart når hide metoden kaldes.
  • hidden.bs.dropdown: Udløses når dropdown'en er færdig med at blive skjult, og CSS-overgange er færdige.

Ofte Stillede Spørgsmål (FAQ)

Hvad er forskellen mellem data-bs-toggle="dropdown" og role="menu"?

data-bs-toggle="dropdown" er en Bootstrap-specifik attribut, der aktiverer dropdown-funktionaliteten via JavaScript. role="menu" er en ARIA-rolle, der bruges til at angive, at et element er en applikationslignende menu. Bootstrap-dropdowns er generiske og kan indeholde forskellige typer indhold, så de tilføjer ikke automatisk role="menu". Hvis din dropdown fungerer som en sand applikationsmenu, der udløser handlinger, bør du manuelt tilføje role="menu" og de relevante ARIA-attributter (f.eks. role="menuitem" på menupunkter) for at forbedre tilgængeligheden.

Hvordan lukker jeg en dropdown-menu?

En Bootstrap-dropdown lukker automatisk, når du klikker udenfor menuen, klikker på udløserknappen igen, eller trykker på ESC-tasten. Du kan også styre denne adfærd med data-bs-auto-close attributten, som beskrevet tidligere, eller programmatisk med JavaScript-metoden hide().

Kan jeg bruge hover i stedet for click til dropdowns?

Som standard er Bootstrap-dropdowns designet til at blive udløst ved et klik. Dette er en bevidst designbeslutning, der forbedrer tilgængeligheden og brugervenligheden, især på touch-enheder, hvor hover-state ikke er ensartet eller eksisterende. Mens det er muligt at tilføje brugerdefineret CSS og JavaScript for at aktivere hover-funktionalitet, anbefales det ikke som standardpraksis, da det kan skabe inkonsekvenser og tilgængelighedsproblemer.

Hvorfor er Popper.js vigtig for dropdowns?

Popper.js er et letvægtsbibliotek, der håndterer den dynamiske positionering af tooltip-, popover- og dropdown-elementer. For dropdowns sikrer Popper.js, at menuen altid vises korrekt i forhold til sin udløser og inden for viewporten, selv når siden scrolles eller layoutet ændres. Det forhindrer, at menuen 'skæres af' eller forsvinder uden for skærmen, hvilket er afgørende for en god brugeroplevelse.

Hvordan gør jeg min navbar responsiv med dropdowns?

For at gøre din navbar responsiv skal du bruge Bootstrap's responsive klasser. Primært .navbar-expand-{breakpoint} (f.eks. .navbar-expand-lg) definerer, hvornår navigationslinjen skal udvides fuldt ud. Under det angivne breakpoint vil navigationslinjen kollapse til en 'hamburger'-menu, der udløses af knappen med klassen .navbar-toggler. Dropdown-elementer inden i denne responsive navbar fungerer automatisk og tilpasser sig den kollapsede menu, hvilket sikrer, at din navigation er funktionel på alle enheder.

Bootstrap 5's dropdown-komponenter er utroligt alsidige og en grundpille i moderne webdesign. Ved at forstå deres opbygning, tilpasningsmuligheder og integration i navigationslinjer, kan du skabe intuitive og æstetisk tiltalende brugerflader. Husk altid at fokusere på både funktionalitet og tilgængelighed for at sikre den bedst mulige oplevelse for alle dine brugere. Med den viden, du nu har fået, er du godt rustet til at implementere effektive dropdown-menuer i dine egne webprojekter.

Hvis du vil læse andre artikler, der ligner Bootstrap 5 Dropdowns: Skab Dynamiske Menuer, kan du besøge kategorien Teknologi.

Go up