Is enfold a good theme?

Dropdown menuer på mobil: Løsninger

26/12/2021

Rating: 4.68 (4678 votes)

Dropdown menuer er en populær og effektiv måde at organisere navigation på hjemmesider. De tillader webudviklere at præsentere et stort antal valgmuligheder på en overskuelig måde, hvilket især er nyttigt for hjemmesider med mange sektioner eller produkter. Men når det kommer til mobile enheder, kan dropdown menuer ofte give anledning til frustration for brugerne. Et almindeligt problem er, at når man forsøger at aktivere en dropdown menu på en touch-skærm, klikker man utilsigtet på det første link i menuen, hvilket fører brugeren væk fra den ønskede side. Dette problem opstår typisk, fordi touch-interaktioner er anderledes end museklik. Heldigvis findes der enkle løsninger til at sikre, at dine dropdown menuer fungerer problemfrit på mobile enheder.

How to change the color of elements in enfold?
Color of the elements in the below groups can be changed from Enfold > General Styling > Select a section like a logo area, footer, etc. Primary group: Consist of elements such as active menu item, menu hover, strong tag, button color, content links, footer links, drop caps.
Indholdsfortegnelse

Forståelse af Problemet med Touch-Interaktion

På en computer bruger vi en mus til at navigere. Når vi fører musen hen over et menupunkt, der har en dropdown, vises undermenuen. Vi kan derefter klikke på det ønskede undermenu-punkt. På en mobil enhed bruger vi fingrene til at interagere med skærmen. Et 'tap' på en skærm kan tolkes forskelligt afhængigt af den måde, dropdown menuen er kodet på. Hvis dropdown menuen er sat op til at reagere på et 'hover' (svæv) som på en desktop, vil et enkelt tryk på en mobil enhed ofte udløse både visningen af dropdown'en og det efterfølgende link. Dette giver brugeren en meget kort tidsramme til at vælge et undermenu-punkt, før siden skifter, hvilket er en dårlig brugeroplevelse.

HTML-struktur for Dropdown Menuer

Lad os tage et kig på den HTML-struktur, du har leveret, som er et godt udgangspunkt for at forstå, hvordan dropdowns oprettes:

<div class="nav"> <div class="links"> <ul id="dropdown"> <li> <a href="index.html"> Tetterode </a> <ul> <li><a href="project.html">Project</a></li> <li><a href="promenade.html">Promenade</a></li> <li><a href="brochure.html">Brochure</a></li> <li><a href="impressies.html">Impressies</a></li> </ul> </li> <li> <a href="oplevering.html">Woningen</a> <ul> <li><a href="oplevering.html">Oplevering</a></li> <li><a href="impressies.html">Impressies</a></li> </ul> </li> <li class="currentpage"> <a href="ligging.html">Locatie</a> <ul> <li><a href="ligging.html">Ligging</a></li> <li><a href="situatie.html">Situatie</a></li> <li><a href="routeplanner.html" class="smaller">Route<br>planner</a></li> </ul> </li> <li> <a href="hypotheken.html">Financiering</a> <ul> <li><a href="hypotheken.html">Hypotheken</a></li> </ul> </li> <li> <a href="makelaars.html">Contact</a> <ul> <li><a href="makelaars.html">Makelaars</a></li> </ul> </li> </ul> </div> </div>

I dette eksempel bruges en indlejret `

    ` struktur til at oprette dropdown-menuerne. Hvert topniveau `

  • ` element indeholder et `` tag for hovedlinket og derefter en `` for undermenuens elementer. Den oprindelige CSS bruger `position: absolute` og `left: -9999px` for at skjule undermenuerne, indtil et `` element 'hoveres', hvorved `left: 0` anvendes for at vise dem. Dette er en klassisk metode, der fungerer godt på desktops, men som nævnt, ikke optimalt på touch-enheder.

CSS Løsninger for Mobil Responsivitet

For at løse problemet med dropdown menuer på mobile enheder, er det nødvendigt at ændre adfærden fra 'hover' til en 'klik' eller 'toggle' mekanisme. Dette kan opnås ved at kombinere HTML, CSS og potentielt lidt JavaScript.

Metode 1: Brug af CSS Checkbox Hack (avanceret)

En metode, der udelukkende bruger CSS, er 'checkbox hack'. Her bruger man skjulte checkboxes og `:checked` pseudo-klassen til at styre visningen af dropdowns. Dette er dog ofte mere komplekst at implementere og vedligeholde.

Metode 2: Brug af JavaScript til Click Events

Den mest almindelige og brugervenlige løsning er at bruge JavaScript til at håndtere klikbegivenheder. I stedet for at stole på 'hover', kan JavaScript bruges til at registrere et klik på et topniveau menupunkt og derefter toggle (vise/skjule) undermenuen.

Her er et eksempel på, hvordan du kan tilføje JavaScript til din side. Tilføj følgende script lige før `` tagget:

<script> document.addEventListener('DOMContentLoaded', function() { const dropdownItems = document.querySelectorAll('#dropdown li'); dropdownItems.forEach(item => { const subMenu = item.querySelector('ul'); if (subMenu) { item.addEventListener('click', function(event) { // Forhindrer, at linket aktiveres, hvis der klikkes på dropdown-triggeren if (event.target.tagName === 'A' && event.target.parentNode === item) { event.preventDefault(); } // Toggler synligheden af undermenuen subMenu.classList.toggle('show'); }); } }); // Lukker dropdowns, hvis man klikker udenfor document.addEventListener('click', function(event) { dropdownItems.forEach(item => { const subMenu = item.querySelector('ul'); if (subMenu && subMenu.classList.contains('show')) { // Tjekker om klikket var udenfor dropdown-elementet if (!item.contains(event.target)) { subMenu.classList.remove('show'); } } }); }); }); </script>

Og tilføj følgende CSS til din eksisterende stylesheet:

/* Tilføj dette til din eksisterende CSS */ /* Vis undermenuer som standard på små skærme, men skjult */ #dropdown ul { display: none; position: static; /* Ændret fra absolute */ left: auto; z-index: 20; font-size: 16px; padding-top: 0px; margin-top: -2px; background-color: #b5001e; /* Bevarer baggrundsfarven */ list-style: none; } /* Vis undermenuen når 'show' klassen er tilføjet */ #dropdown ul.show { display: block; } /* Forhindrer hover-effekt på undermenuer på mobil */ @media (max-width: 768px) { /* Du kan justere denne breakpoint */ #dropdown li:hover ul { left: auto; /* Sørger for at den ikke flyttes */ display: none; /* Skjuler som standard */ } #dropdown li ul { position: static; /* Ændrer position for mobil */ display: none; /* Skjult som standard */ } #dropdown li ul.show { display: block; /* Vises når 'show' klassen er tilføjet */ } .links ul li { height: auto; /* Tillader menuen at vokse */ line-height: normal; /* Justerer linjehøjde */ padding: 10px 14px; /* Justerer padding */ } .links a { display: block; /* Gør links til blok-elementer */ } .nav { height: auto; /* Tillader menuen at vokse */ } } 

I dette JavaScript-eksempel:

  • Vi vælger alle `
  • ` elementer inden for `#dropdown`.
  • For hvert `
  • ` der indeholder en undermenu (`
      `), tilføjer vi en 'click' event listener.
  • Når et `
  • ` klikkes på, forhindrer vi standardadfærden for `` elementet (ved at bruge `event.preventDefault()`) for at undgå at siden skifter med det samme.
  • Vi tilføjer eller fjerner klassen `show` på undermenuen.
  • Den tilføjede CSS sikrer, at undermenuer kun vises, når de har klassen `show`, og at de vises korrekt som en dropdown-liste.
  • En yderligere event listener lukker dropdowns, hvis brugeren klikker uden for dropdown-området, hvilket forbedrer brugeroplevelsen.

CSS Media Queries for Tilpasning

For at sikre, at din navigation ser godt ud og fungerer optimalt på både desktops og mobile enheder, er det essentielt at bruge CSS media queries. Du har allerede en media query sat op, men den skal muligvis justeres for at håndtere dropdowns korrekt.

I din eksisterende CSS har du:

/* Din eksisterende CSS */ .nav{ ... } .links ul li { ... } /* ... osv. */ #dropdown ul{ background-color:#b5001e; list-style:none; position:absolute; left:-9999px; z-index:20; font-size:16px; padding-top:0px; margin-top:-2px; } #dropdown ul li{ float:none; } #dropdown ul a{ white-space:nowrap; font-size:16px; } #dropdown li:hover ul{ left:0; } #dropdown li:hover a{ text-decoration:underline; } #dropdown li:hover ul a{ text-decoration:none; } #dropdown li:hover ul li a:hover{ color:#000; } .currentpage{ height:50px; background-color:#b5001e; display:inline-block; } 

Som nævnt i JavaScript-sektionen, skal du tilpasse disse regler for mobile enheder:

Vigtigt: Når du implementerer JavaScript-løsningen, skal du sørge for at dine media queries i CSS håndterer visningen af undermenuer korrekt. Typisk vil du ønske at skjule undermenuerne som standard på mobile enheder (`display: none;`) og kun vise dem, når den relevante klasse (`.show`) er tilføjet.

Alternativer til Traditionelle Dropdowns på Mobil

Mens JavaScript-løsningen er effektiv, kan du også overveje alternative navigationsmønstre, der er mere velegnede til touch-skærme:

  • Accordion Menu: Hvert menupunkt kan "åbnes" som et harmonika for at afsløre undermenuen. Dette er en meget intuitiv løsning på mobile enheder.
  • Off-Canvas Menu (Hamburger Menu): Dette er en meget populær løsning, hvor menuen gemmes bag en ikon (ofte kaldet en "hamburger" menu) og skubbes ind fra siden, når brugeren trykker på ikonet. Dette sparer skærmplads og giver en ren brugergrænseflade.
  • Full-Screen Overlay Menu: Ligesom off-canvas, men menuen vises som en fuldskærms overlay, der dækker indholdet, indtil den lukkes.

Tabel: Fordele og Ulemper ved Forskellige Mobil-Navigationstilgange

Her er en oversigt, der hjælper dig med at vælge den bedste tilgang:

NavigationstypeFordele på MobilUlemper på MobilBedst til
Traditionel Dropdown (med JS)Kendt brugergrænseflade, god pladsudnyttelseKan være lidt mere kompleks at implementere korrekt, kræver touch-venlig logikMellemstore til store navigationsmenuer
Accordion MenuMeget intuitiv, god til hierarkisk indholdKan tage mere plads, hvis mange menuer er åbneMenuer med dybe hierarkier
Off-Canvas (Hamburger)Sparer meget skærmplads, ren UIKræver et ekstra klik for at åbne menuen, kan skjule vigtige navigationspunkterAlle typer hjemmesider, især dem med begrænset plads
Full-Screen OverlayTydelig og fokuseret, god til at fremhæve menupunkterKan føles overvældende, kræver et ekstra klikHjemmesider, hvor navigationen er en central del af oplevelsen

Ofte Stillede Spørgsmål (FAQ)

Q1: Hvorfor aktiveres mit dropdown-link altid på mobil?
A1: Dette skyldes sandsynligvis, at din dropdown-menu er kodet til at reagere på 'hover' (svæv), hvilket på touch-enheder tolkes som et enkelt tryk, der både viser undermenuen og aktiverer det primære link. Du skal implementere en løsning baseret på klik-begivenheder (typisk med JavaScript) for at adskille disse handlinger.

Q2: Kan jeg lave en dropdown menu, der kun bruger CSS?
A2: Ja, det er muligt ved hjælp af metoder som 'checkbox hack', men det kan være mere komplekst at implementere og fejlfinde end en JavaScript-baseret løsning. For de fleste er JavaScript den mest ligetil og effektive metode.

Q3: Hvornår skal jeg bruge en hamburger menu i stedet for en dropdown?
A3: En hamburger menu er ideel, når du har brug for at spare skærmplads, eller når din navigation er meget omfattende. Den giver en ren og minimalistisk brugeroplevelse, men det kræver et ekstra klik at få adgang til menuen.

Q4: Hvordan tester jeg, om min dropdown menu fungerer korrekt på mobil?
A4: Den bedste måde er at bruge din browsers udviklerværktøjer (f.eks. Chrome DevTools) til at simulere forskellige mobile enheder. Du kan også teste direkte på en fysisk mobil enhed for at få den mest præcise feedback.

Konklusion

At sikre, at dine dropdown menuer fungerer fejlfrit på mobile enheder, er afgørende for en god brugeroplevelse. Ved at implementere en klik-baseret logik med JavaScript og tilpasse din CSS med media queries, kan du transformere en potentielt frustrerende oplevelse til en problemfri navigation. Husk altid at teste dine ændringer grundigt på forskellige enheder og skærmstørrelser for at garantere optimal funktionalitet. Overvej også alternative navigationsmønstre, hvis en traditionel dropdown ikke passer bedst til dit webdesigns behov.

Hvis du vil læse andre artikler, der ligner Dropdown menuer på mobil: Løsninger, kan du besøge kategorien Teknologi.

Go up