How to create a toggle button in HTML?

Skab Moderne Brugerflader med iOS-Switches

27/11/2024

Rating: 4.48 (1167 votes)

Siden den første iPhone så dagens lys i 2007, har de elegante iOS-switches, der stadig bruges den dag i dag, været et kendetegn for moderne og intuitiv brugerflade. Disse små, men effektive kontrolelementer er mere end blot smukke; de giver en klar visuel feedback og en brugervenlig interaktion, der er afgørende for enhver mobil- eller webapplikation. At integrere dem i din app kan give en markant forbedring af brugeroplevelsen og tilføje et strejf af modernitet og professionalisme.

Why should you use iOS switches in your mobile app?
First seen in 2007 when the first iphone came out, those nifty iOS switches that are used until today are undeniably nice and modern looking. Having them in your web app or mobile app can add a nice UI experience and give it a touch of modernity. Let's see how we can go about designing them with a little bit of css code and 3 html elements only.

Men hvordan kan man implementere disse karakteristiske switches i sine egne projekter? Der findes primært to veje: enten ved at bygge dem fra bunden med HTML og CSS, eller ved at udnytte den nye native understøttelse i visse browsere. I denne artikel vil vi udforske begge metoder og give dig de nødvendige værktøjer og indsigt til at træffe det bedste valg for dit projekt.

Indholdsfortegnelse

Hvorfor Vælge iOS-Switches til Din App?

Valget af brugerfladeelementer er ikke kun et spørgsmål om æstetik; det handler om funktionalitet og brugervenlighed. iOS-switches er designet til at give en øjeblikkelig og tydelig indikation af en "til" eller "fra" tilstand. Dette gør dem ideelle til indstillinger, der ændrer en tilstand med det samme, uden behov for en bekræftelsesknap. Deres glatte animationer og klare visuelle signaler reducerer kognitiv belastning og forbedrer interaktionens flydende karakter. De signalerer modernitet, effektivitet og en brugervenlig tilgang, som mange brugere er vant til fra deres smartphones.

Udover den visuelle appel bidrager switches også til en mere strømlinet brugerrejse. Forestil dig en indstillingsside, hvor du hurtigt kan slå notifikationer til eller fra, aktivere mørk tilstand eller justere privatlivsindstillinger med et enkelt tryk. Denne direkte interaktion skaber en følelse af kontrol og effektivitet, hvilket er afgørende for en positiv brugeroplevelse. De er særligt velegnede til mobile enheder, hvor pladsen er begrænset, og præcis interaktion er vigtig.

Byg Din Egen iOS-Switch med HTML og CSS

Selvom der findes færdige løsninger, kan det være utroligt lærerigt og give fuld kontrol at bygge din egen iOS-inspirerede switch ved hjælp af grundlæggende webteknologier. Denne metode kræver kun tre HTML-elementer og en smule CSS-kode for at opnå et imponerende resultat. Det er en fleksibel tilgang, der fungerer på tværs af de fleste browsere, selv dem der ikke understøtter den native switch-funktionalitet.

HTML-Strukturen

Vi starter med en simpel HTML-struktur, der indeholder en etiket (<label>), et usynligt afkrydsningsfelt (<input type="checkbox">) og et tomt <i>-element, som vi vil style til at ligne selve switchen:

<label class="ios-switch"> <input type="checkbox"> <i></i> </label>

Her fungerer <label> som den klikbare beholder for hele switchen, mens <input type="checkbox"> holder styr på switchens tilstand (tændt/slukket). <i></i>-elementet er det visuelle lærred, hvor vi tegner switchens spor og knap.

CSS-Styling Trin for Trin

Nu kommer magien med CSS. Vi starter med beholderen:

.ios-switch { display: inline-block; cursor: pointer; }

Dette sikrer, at switchen opfører sig som et inline-element og indikerer, at den er klikbar.

Dernæst skjuler vi det standard afkrydsningsfelt, da vi ikke ønsker at se det klassiske udseende:

.ios-switch input { display: none; }

Nu styler vi <i>-tagget, som repræsenterer switchens spor. Vi definerer dimensioner, baggrundsfarve og afrundede kanter, der giver det karakteristiske pille-udseende:

.ios-switch i { position: relative; display: inline-block; margin-right: 0.5rem; width: 46px; height: 26px; background-color: #e6e6e6; border-radius: 23px; vertical-align: text-bottom; transition: all 0.3s; }

position: relative er vigtig, da det gør det muligt at placere de efterfølgende pseudo-elementer præcist i forhold til sporet. transition sikrer en glat overgang, når switchen skifter tilstand.

Vi tilføjer et ::before pseudo-element, som skaber en indre baggrund, der er synlig, når switchen er slukket:

.ios-switch i::before { content: ""; position: absolute; left: 0; width: 42px; height: 22px; background-color: #fff; border-radius: 11px; transform: translate3d(2px, 2px, 0) scale3d(1, 1, 1); transition: all 0.3s; }

Dette giver en fin hvid indramning, der er typisk for iOS-switches.

::after pseudo-elementet skaber den runde "knap" eller "tommel", som brugeren interagerer med:

.ios-switch i::after { content: ""; position: absolute; left: 0; width: 22px; height: 22px; background-color: #fff; border-radius: 11px; box-shadow: 0 2px 2px rgba(0, 0, 0, 0.24); transform: translate3d(2px, 2px, 0); transition: all 0.2s ease-in-out; }

Her tilføjes også en skygge for at give knappen dybde og gøre den mere fremtrædende.

For at give en responsiv effekt, når switchen aktiveres, justerer vi knapens bredde og position:

.ios-switch:active i::after { width: 28px; transform: translate3d(2px, 2px, 0); } .ios-switch:active input:checked + i::after { transform: translate3d(16px, 2px, 0); }

Endelig definerer vi baggrundsfarven for sporet, når switchen er tændt, typisk en grøn nuance:

.ios-switch input:checked + i { background-color: #5bda4e; }

Og for at simulere den glidende effekt, når switchen tændes, justerer vi pseudo-elementernes transformationer:

.ios-switch input:checked + i::before { transform: translate3d(18px, 2px, 0) scale3d(0, 0, 0); } .ios-switch input:checked + i::after { transform: translate3d(22px, 2px, 0); }

Denne CSS-baserede metode giver dig fuld kontrol over designet og animationerne, hvilket gør det muligt at skræddersy switchen præcis til din apps æstetik. Det er en robust løsning, der kan tilpasses yderligere med JavaScript for mere avancerede interaktioner, eller indkapsles i komponenter for genbrug i frameworks som React.

Den Native Safari Switch: En Ny Æra for Web

Mens den brugerdefinerede CSS-tilgang er kraftfuld, har webplatformen historisk manglet en indbygget switch-kontrol, der matcher operativsystemets udseende og fornemmelse. Dette ændrede sig med introduktionen af en ny HTML-formularstyring som en del af Safari 17.4. Dette er en game changer, da det giver webudviklere mulighed for at bruge en indbygget switch, der automatisk arver OS-specifikke stilarter og adfærd.

What is the markup for a switch in Safari?
The markup for switches is . It comes built-in with ::thumb and ::track pseudo-elements. The ::before and ::after pseudo-elements can also be used for extra possibilities! The switch control is enabled in Safari Technology Preview. The native switch supports the accent-color and color-scheme CSS properties.

Simpel HTML-Markup

HTML-koden for den native switch er utrolig enkel:

<input type="checkbox" switch>

Ved blot at tilføje attributten switch til et standard <input type="checkbox"> element, transformerer Safari det til en fuldt funktionsdygtig OS-lignende switch. Dette er en betydelig forenkling af udviklingsprocessen, da det fjerner behovet for kompleks CSS og JavaScript for at efterligne OS-kontrollen.

Fordele ved Native Switches

Introduktionen af native switches er baseret på flere nøgleprincipper, der gør dem til et attraktivt valg:

  • OS-Integration: Som standard får switchen det udseende og den fornemmelse, der matcher operativsystemets kontrol. Dette sikrer en ensartet brugeroplevelse på tværs af apps og websteder.
  • Bagudkompatibilitet: En browser, der ikke understøtter <input type="checkbox" switch>, vil behandle det som et almindeligt <input type="checkbox">. Dette sikrer, at din app forbliver funktionel, selv i ældre browsere, omend med et mindre moderne udseende.
  • Kendt API: Den fungerer som et afkrydsningsfelt med hensyn til dens API og hændelser, hvilket gør det nemt for udviklere at arbejde med den, selvom den ikke understøtter :indeterminate pseudo-klassen.
  • Tilgængelighed (Accessibility): Under motorhjelmen bruger den ARIA switch-rollen og annoncerer tilstandene "Til" og "Fra" ligesom en OS-switch. På macOS og iOS kan den vise tilgængelighedsindikatorer (f.eks. "On/Off Labels") for brugere med særlige behov. Dette er et kæmpe plus for brugervenlighed og inklusion.
  • Stylingmuligheder: Mens appearance: auto (standard) giver begrænset styling, kan du med appearance: none få fuld kontrol over udseendet, ligesom med et standard afkrydsningsfelt. Egenskaben accent-color understøttes også og vil blive anvendt på switchens "spor"-baggrund, hvilket giver en nem måde at tilpasse farven på.
  • Sprogunderstøttelse: Den understøtter en bred vifte af sprog og har ud-af-boksen understøttelse for vertikal gengivelse, hvilket er vigtigt for global tilgængelighed.

Switch vs. Afkrydsningsfelt: Hvornår skal man bruge hvad?

Det er vigtigt at forstå forskellen mellem en switch og et afkrydsningsfelt for at vælge det korrekte UI-element:

  • Switch: Anbefales, når slutbrugeren opfatter elementet som en indstilling, der enten er "til" eller "fra". En switch ændrer typisk en tilstand med det samme, f.eks. "Slå Wi-Fi til/fra" eller "Aktivér mørk tilstand". Det er en direkte handling.
  • Afkrydsningsfelt: Er velegnet, når slutbrugeren skal vælge noget fra en liste eller bekræfte en handling, der måske kræver yderligere trin eller en "Gem"-knap. F.eks. "Jeg accepterer vilkårene" eller "Vælg dine foretrukne nyhedskategorier".

Kort sagt, en switch er for øjeblikkelige tilstandsændringer, mens et afkrydsningsfelt er for valg eller bekræftelser.

Sammenligning: Brugerdefineret CSS vs. Native HTML Switch

For at hjælpe dig med at træffe en informeret beslutning, lad os sammenligne de to tilgange:

EgenskabBrugerdefineret CSS/HTML SwitchNative HTML Switch (Safari 17.4+)
ImplementeringskompleksitetModerat (kræver HTML, CSS, potentielt JS)Lav (enkel HTML-attribut)
BrowserunderstøttelseBred (fungerer i de fleste moderne browsere)Begrænset (kun Safari 17.4+; falder tilbage til checkbox i andre)
TilpasningsmulighederFuld kontrol over udseende og animationerBegrænset med appearance: auto; fuld kontrol med appearance: none
OS-integrationIngen (skal efterlignes manuelt)Fuld (matcher automatisk OS-udseende)
Tilgængelighed (Accessibility)Skal implementeres omhyggeligt (ARIA-roller)Indbygget og robust
YdeevneAfhænger af CSS-kompleksitet og animationerOptimeret af browseren
FremtidssikringKræver vedligehold for at matche OS-ændringerBrowseren håndterer opdateringer for OS-match

Ofte Stillede Spørgsmål om Switches

Hvad er en iOS-switch?

En iOS-switch er et brugerfladeelement, der simulerer en fysisk tænd/sluk-knap. Den bruges til at kontrollere en binær indstilling, f.eks. at slå en funktion til eller fra. Den er kendt for sit glatte design og intuitive interaktion, der typisk ses på Apple-enheder.

Hvorfor skal jeg bruge switches i min app?

Switches forbedrer brugeroplevelsen ved at tilbyde en klar og øjeblikkelig visuel feedback for tilstandsændringer. De gør indstillinger nemme at forstå og manipulere, hvilket bidrager til en mere moderne og professionel applikation. De er ideelle til hurtige, direkte handlinger.

Er det svært at implementere en iOS-switch?

Det afhænger af metoden. At bygge en custom switch med HTML og CSS kræver en god forståelse af CSS-egenskaber som position, transform og pseudo-elementer, men er fuldt ud muligt med den rette vejledning. Med den nye native Safari-switch er implementeringen utrolig enkel, da den kun kræver en enkelt HTML-attribut.

Er native switches tilgængelige i alle browsere?

Nej, den native <input type="checkbox" switch> er i øjeblikket kun understøttet i Safari 17.4 og nyere versioner. I andre browsere vil den falde tilbage til at blive vist som et standard afkrydsningsfelt. For bred browserkompatibilitet skal du enten bruge en brugerdefineret CSS-løsning eller overveje at anvende en polyfill eller et JavaScript-bibliotek, der emulerer adfærden.

Kan jeg tilpasse udseendet af native switches?

Ja, men med visse begrænsninger. Hvis du bruger appearance: auto (standard), kan du kun ændre enkelte egenskaber som accent-color. For fuld kontrol over udseendet skal du sætte appearance: none, hvilket fjerner den native styling og lader dig style den fra bunden med CSS, ligesom en custom switch. Dog vil du miste de indbyggede OS-specifikke fordele.

Hvad med tilgængelighed for switches?

Tilgængelighed er afgørende. Native Safari switches har indbygget ARIA switch-rolle og håndterer "Til"/"Fra"-meddelelser for skærmlæsere, samt understøtter OS-specifikke tilgængelighedsindstillinger. Ved brugerdefinerede CSS-switches skal du selv sikre korrekt ARIA-implementering og tastaturnavigation for at gøre dem tilgængelige for alle brugere.

Konklusion

iOS-switches er et fremragende valg for enhver app, der stræber efter en moderne og intuitiv brugerflade. Uanset om du vælger at bygge din egen switch med detaljeret HTML og CSS for maksimal kontrol og bred browserkompatibilitet, eller om du omfavner den nye, simple native Safari-switch for dens indbyggede OS-integration og tilgængelighed, er målet det samme: at skabe en friktionsfri og effektiv brugeroplevelse.

Som webudvikler er det vigtigt at afveje behovet for fuld tilpasning mod fordelene ved indbygget funktionalitet og tilgængelighed. Den brugerdefinerede tilgang giver dig en dybere forståelse af, hvordan disse elementer fungerer, mens den native tilgang forenkler udviklingen betydeligt for understøttede browsere. Uanset dit valg vil en velimplementeret switch uden tvivl løfte din apps brugerflade og gøre den mere attraktiv og brugervenlig.

Hvis du vil læse andre artikler, der ligner Skab Moderne Brugerflader med iOS-Switches, kan du besøge kategorien Mobil.

Go up