31/08/2024
I en verden, hvor internetbrugere tilgår hjemmesider fra et væld af enheder – fra små smartphones til store desktop-skærme – er responsivt design ikke længere en luksus, men en absolut nødvendighed. En af de mest almindelige udfordringer for webudviklere er at kontrollere, hvilke elementer der vises eller skjules på specifikke skærmstørrelser. Forestil dig for eksempel en stor, iøjnefaldende knap på dit karuselslider, der giver perfekt mening på en stor desktop-skærm, men som tager for meget plads eller virker malplaceret på en mobiltelefon. Hvordan sikrer du, at denne knap kun vises for desktop-brugere og forbliver skjult for mobil- og tabletbrugere? Svaret ligger i de kraftfulde, indbyggede værktøjer, som front-end frameworks som Bootstrap tilbyder. Denne artikel vil dykke ned i, hvordan du effektivt kan administrere synligheden af elementer i både Bootstrap 3 og den nyere Bootstrap 4, og hvordan du navigerer i de nuancer, der opstår, når du arbejder med forskellige skærmstørrelser.

Hvorfor er Responsivt Design og Elementvisning Vigtigt?
Responsivt design handler om at skabe en fleksibel brugeroplevelse, der tilpasser sig brugerens enhed og skærmstørrelse. Dette er afgørende for både brugervenlighed (UX) og søgemaskineoptimering (SEO). Hvis din hjemmeside ikke tilpasser sig korrekt, kan det resultere i en frustrerende oplevelse for mobilbrugere, som potentielt kan forlade din side. Dette kan føre til højere afvisningsprocenter og ringere placeringer i søgemaskinerne. Ved at kontrollere synligheden af specifikke elementer, såsom billeder, tekstblokke, navigationsmenuer eller knapper, kan du:
- Optimere indlæsningstider på mobile enheder ved at skjule tunge elementer, der ikke er nødvendige.
- Forbedre navigationen og layoutet, så det passer til mindre skærme.
- Fremhæve de vigtigste oplysninger for den specifikke enhedstype.
- Sikre en konsistent og professionel præsentation på tværs af alle enheder.
Bootstrap, som er et af de mest populære HTML-, CSS- og JavaScript-frameworks, er bygget til at gøre responsivt design nemt og effektivt. Det bruger medieforespørgsler til at anvende forskellige stilarter baseret på skærmstørrelsen, hvilket giver dig fuld kontrol over dit layouts adfærd.
At Skjule og Vise Elementer i Bootstrap 3
Bootstrap 3 introducerede et sæt hjælpeklasser, der gjorde det ligetil at skjule eller vise elementer baseret på skærmstørrelsen. Disse klasser er baseret på Bootstrap's foruddefinerede breakpoints for forskellige enhedskategorier. De er designet til at give dig præcis kontrol over, hvordan dit indhold præsenteres på telefoner, tablets og desktops.
De primære klasser i Bootstrap 3 til dette formål falder i to kategorier: .visible-* og .hidden-*. Hver kategori har varianter for de forskellige skærmstørrelser:
- Extra small (
xs): Telefoner (skærmbredde < 768px) - Small (
sm): Tablets (skærmbredde ≥ 768px) - Medium (
md): Desktops (skærmbredde ≥ 992px) - Large (
lg): Store desktops (skærmbredde ≥ 1200px)
For eksempel vil .hidden-xs skjule et element på ekstra små skærme (telefoner), men vise det på alle større skærme. Omvendt vil .visible-xs kun vise et element på ekstra små skærme og skjule det på alle større skærme.
Her er en oversigt over de mest almindelige klasser i Bootstrap 3:
| Klasse | Extra small (Telefoner <768px) | Small (Tablets ≥768px) | Medium (Desktops ≥992px) | Large (Desktops ≥1200px) |
|---|---|---|---|---|
.visible-xs-* | Synlig | Skjult | Skjult | Skjult |
.visible-sm-* | Skjult | Synlig | Skjult | Skjult |
.visible-md-* | Skjult | Skjult | Synlig | Skjult |
.visible-lg-* | Skjult | Skjult | Skjult | Synlig |
.hidden-xs | Skjult | Synlig | Synlig | Synlig |
.hidden-sm | Synlig | Skjult | Synlig | Synlig |
.hidden-md | Synlig | Synlig | Skjult | Synlig |
.hidden-lg | Synlig | Synlig | Synlig | Skjult |
Eksempler:
<p class="hidden-xs">Denne tekst er skjult på en EKSTRA LILLE skærm.</p> <p class="hidden-sm">Denne tekst er skjult på en LILLE skærm.</p> <p class="hidden-md">Denne tekst er skjult på en MEDIUM skærm.</p> <p class="hidden-lg">Denne tekst er skjult på en STOR skærm.</p> Det er vigtigt at bemærke, at .visible-xs, .visible-sm, .visible-md og .visible-lg klasserne blev deprecaterede fra Bootstrap v3.2.0. Selvom de stadig fungerer i mange tilfælde, anbefales det at bruge .hidden-* klasserne for at opnå den ønskede effekt, da de er mere robuste og fremtidssikre i Bootstrap 3. For eksempel, hvis du vil vise noget kun på en mobilskærm, ville du i stedet for .visible-xs bruge en kombination af skjuleklasser: .hidden-sm hidden-md hidden-lg.
Den Moderne Tilgang: Bootstrap 4 og Display Utility Classes
Med udgivelsen af Bootstrap 4 kom en betydelig ændring i måden, hvorpå responsiv visning håndteres. Bootstrap 4 omfavner en mobile-first tilgang fuldt ud, hvilket betyder, at standardlayoutet er optimeret til små skærme, og du derefter tilføjer regler for større skærme. De gamle .visible-* og .hidden-* klasser eksisterer ikke længere i Bootstrap 4. I stedet bruges et nyt sæt af "Display Utility Classes" (.d-*), som giver mere fleksibel kontrol.
Hovedprincippet er at bruge .d-none til at skjule et element som standard, og derefter bruge .d-{breakpoint}-{display} til at vise det på specifikke breakpoints.

De nye breakpoints i Bootstrap 4 er:
- xs (Extra Small): Ingen medieforespørgsel – standard (skærmbredde < 576px)
- sm (Small): ≥ 576px
- md (Medium): ≥ 768px
- lg (Large): ≥ 992px
- xl (Extra Large): ≥ 1200px)
De nye klasser giver dig mulighed for at specificere display-typen (f.eks. block, inline, inline-block, flex, table osv.) for et element ved et bestemt breakpoint.
For eksempel:
.d-none: Skjuler elementet på alle skærmstørrelser..d-sm-block: Viser elementet som en blok på små (≥ 576px) og større skærme..d-none .d-md-block: Skjuler elementet på ekstra små og små skærme, men viser det som en blok på medium (≥ 768px) og større skærme.
Her er en oversigt over almindelige Display Utility klasser i Bootstrap 4:
| Formål | xs (Standard) | sm (≥576px) | md (≥768px) | lg (≥992px) | xl (≥1200px) |
|---|---|---|---|---|---|
| Skjul kun på | .d-none .d-sm-block | .d-sm-none .d-md-block | .d-md-none .d-lg-block | .d-lg-none .d-xl-block | .d-xl-none |
| Vis kun på | .d-block .d-sm-none | .d-none .d-sm-block .d-md-none | .d-none .d-md-block .d-lg-none | .d-none .d-lg-block .d-xl-none | .d-none .d-xl-block |
| Skjul på og større | .d-none | .d-sm-none | .d-md-none | .d-lg-none | .d-xl-none |
| Skjul på og mindre | .d-none | .d-block .d-sm-none | .d-block .d-md-none | .d-block .d-lg-none | .d-block .d-xl-none |
| Skjul på alle | .d-none | ||||
| Vis på alle | .d-block (eller d-inline, d-flex osv.) | ||||
Eksempler:
<div class="d-none d-sm-block">Denne div vises på sm+ skærme.</div> <div class="d-sm-none">Denne div vises kun på små skærme (<576px).</div> <div class="d-md-none d-lg-block">Dette element er skjult på medium skærme, men synligt på store skærme.</div> Forskellen er subtil, men vigtig. I Bootstrap 4 bygger du opad fra den mindste skærmstørrelse. Hvis du vil have noget til at være skjult som standard og derefter vises på en tablet, tilføjer du .d-none og derefter .d-md-block (eller den passende display-type). Dette giver en mere intuitiv og logisk måde at tænke på responsivt design, da mobil er udgangspunktet.
Konvertering fra Bootstrap 3 Klasser til Bootstrap 4
For dem, der migrerer projekter fra Bootstrap 3 til 4, kan det være forvirrende at omstille sig til de nye display-klasser. Her er en guide til, hvordan de gamle Bootstrap 3-klasser typisk oversættes til Bootstrap 4-ækvivalenter:
hidden-xs(skjult på xs, synlig sm+): Svarer til.d-none .d-sm-blockhidden-sm(skjult på sm, synlig xs, md, lg): Svarer til.d-block .d-sm-none .d-md-blockhidden-md(skjult på md, synlig xs, sm, lg): Svarer til.d-block .d-md-none .d-lg-blockhidden-lg(skjult på lg, synlig xs, sm, md): Svarer til.d-block .d-lg-none .d-xl-block
Og for de omvendte visible-* scenarier (husk, at disse blev deprecaterede i B3, men ækvivalenter findes i B4's display-klasser):
visible-xs(synlig kun på xs): Svarer til.d-block .d-sm-nonevisible-sm(synlig kun på sm): Svarer til.d-none .d-sm-block .d-md-nonevisible-md(synlig kun på md): Svarer til.d-none .d-md-block .d-lg-nonevisible-lg(synlig kun på lg): Svarer til.d-none .d-lg-block .d-xl-none
Det er vigtigt at huske på, at .d-{breakpoint}-block kan erstattes med .d-{breakpoint}-inline, .d-{breakpoint}-flex, .d-{breakpoint}-table-cell osv., afhængigt af den specifikke display-type, du ønsker for elementet. Dette giver en utrolig fleksibilitet til at kontrollere, hvordan dine elementer ikke kun vises, men også hvordan de opfører sig i layoutet på forskellige skærmstørrelser.
Specifikke Udfordringer: Skærmstørrelser og Brugeragentdetektion
Selvom Bootstrap's responsivitet er robust, kan der opstå specifikke udfordringer, især med enheder, der har usædvanlige skærmbredder, eller når du ønsker at målrette mod enheder, der falder mellem Bootstrap's standard-breakpoints. Et klassisk eksempel er en iPhone 5, der i liggende tilstand har en bredde på 1136px. Dette er bredere end Bootstrap 3's "small" (tablet) breakpoint på 768px og endda tæt på "medium" desktop breakpoint på 992px, og i nogle tilfælde kan det endda ramme "large" desktop breakpoint på 1200px i Bootstrap 4.
Hvis du har et element, som du absolut vil skjule på alle telefoner og tablets, uanset deres bredde (f.eks. en iPhone 5 i liggende tilstand), men som falder uden for de almindelige .hidden-xs eller .hidden-sm definitioner, kan du støde på problemer. En .hidden-sm klasse ville skjule elementet på tablets (≥768px), men en stor iPhone (f.eks. en iPhone 5 i liggende tilstand med 1136px) ville stadig vise elementet, da den behandles som en desktop-størrelse af .hidden-sm.
I sådanne sjældne tilfælde, hvor Bootstrap's standardklasser ikke er tilstrækkelige, har du et par muligheder:
- Brugerdefinerede medieforespørgsler: Dette er den mest anbefalede tilgang. Du kan oprette dine egne CSS-regler for specifikke skærmbredder. For eksempel, hvis du vil skjule et element på alle skærme under 1200px, men vise det på 1200px og derover, kan du gøre dette:
.mit-element-der-skal-skjules { /* Skjult som standard for at dække xs, sm, md, lg */ display: none; } @media (min-width: 1200px) { .mit-element-der-skal-skjules { display: block; /* Eller inline, flex, alt efter behov */ } }Dette giver dig præcis kontrol over, hvornår elementet vises. Vær dog opmærksom på, at mange PC- og laptopbrugere også har skærmbredder i dette interval, så du risikerer at skjule indhold for dem også, hvis dit mål er *kun* at skjule for enheder, der er "telefoner" eller "tablets" i den traditionelle forstand.
- JavaScript Brugeragentdetektion (kun som sidste udvej): Denne metode indebærer at bruge JavaScript til at identificere brugerens enhedstype (f.eks. om det er en iPhone, iPad, Android-telefon osv.) baseret på "User-Agent" strengen, som browseren sender. Hvis den identificerer en mobil eller tablet, kan den derefter dynamisk tilføje en CSS-klasse, der skjuler elementet.
Eksempel (konceptuelt, ikke fuld kode):
if (navigator.userAgent.match(/iPhone|iPad|Android|BlackBerry|Opera Mini|Windows Phone/i)) { document.getElementById('minKnap').classList.add('skjul-paa-mobil'); }Dette er dog generelt ikke anbefalet som den primære løsning, da brugeragentstrenge kan være upålidelige, ændre sig, og det er svært at vedligeholde en omfattende liste over alle enheder. Desuden fokuserer responsivt design på skærmstørrelse og -funktioner (f.eks. touch-skærm), ikke på den specifikke enhedstype. En ren CSS-løsning med medieforespørgsler er altid at foretrække, da den er mere robust og fremtidssikret.

Be aware, if you're trying to hide on mobile phone, you'll need to use hidden-xs Note that this is not tablet-and-less specific with hidden-sm. So, if you want both tablet and mobile, you'll have to use hidden-sm hidden-xs in your class attribute on that element to hide it in both.
Husk altid at definere dine klasser korrekt. Hvis du bruger en brugerdefineret klasse ud over Bootstrap's, skal du sørge for, at din CSS-regel har tilstrækkelig specificitet til at tilsidesætte Bootstrap's standardregler, eller at du kombinerer dem korrekt (f.eks. <div class="mit-element hidden-xs">...</div>).
Ofte Stillede Spørgsmål (FAQ)
Hvad er forskellen på Bootstrap 3 og 4 med hensyn til at skjule elementer?
Den største forskel er skiftet fra .visible-* og .hidden-* klasser i Bootstrap 3 til de mere fleksible .d-{breakpoint}-{display-type} klasser i Bootstrap 4. Bootstrap 4 omfavner en "mobile-first" tilgang, hvor .d-none skjuler et element som standard, og du derefter specificerer, hvornår det skal vises på større skærme. Dette giver mere granulær kontrol over elementets display-egenskaber (f.eks. block, inline, flex).
Kan jeg skjule et element kun på iPhones?
Bootstrap's responsivitet er baseret på skærmbredde, ikke specifikke enhedsmærker som iPhone. Du kan skjule elementer på "extra small" skærme (som typisk omfatter iPhones) ved hjælp af .hidden-xs (Bootstrap 3) eller .d-none .d-sm-block (Bootstrap 4). Hvis du har brug for at målrette en bestemt iPhone-model med en usædvanlig skærmbredde, der ikke passer ind i standard-breakpoints, skal du muligvis bruge brugerdefinerede CSS medieforespørgsler. Brugeragentdetektion via JavaScript er en mulighed, men anbefales ikke som førstevalg på grund af dens upålidelighed.
Hvad skal jeg gøre, hvis Bootstrap-klasserne ikke passer til min specifikke skærmstørrelse?
Hvis Bootstrap's standard-breakpoints ikke er tilstrækkelige, er den bedste løsning at tilføje dine egne brugerdefinerede CSS medieforespørgsler. Dette giver dig mulighed for at definere præcise min-width og max-width værdier, der passer til dine specifikke behov. Sørg for at placere dine egne CSS-regler efter Bootstrap's CSS for at sikre, at de tilsidesætter standardreglerne, hvis nødvendigt.
Er det bedst at skjule eller vise elementer som standard?
Med Bootstrap 4's mobile-first tilgang er det ofte bedst at tænke på elementer som "skjult som standard" (.d-none) og derefter "vist på specifikke breakpoints" (f.eks. .d-md-block). Dette sikrer, at din mobiloplevelse er slank og hurtig, og du tilføjer kun kompleksitet for større skærme, hvor det er berettiget. I Bootstrap 3, hvor mobile-first ikke var så udtalt, brugte man ofte .hidden-* klasserne til at fjerne elementer, der var synlige som standard.
At mestre kunsten at skjule og vise elementer responsivt er en grundlæggende færdighed for enhver webudvikler. Bootstrap har gjort denne opgave betydeligt nemmere med sine indbyggede hjælpeklasser. Uanset om du arbejder med Bootstrap 3 eller 4, er forståelsen af breakpoints og de tilsvarende klasser nøglen til at skabe en flydende og brugervenlig oplevelse på tværs af alle enheder. Ved at anvende disse teknikker korrekt sikrer du, at dit indhold altid præsenteres optimalt, uanset om brugeren tilgår din hjemmeside fra en ny smartphone eller en stor desktop-skærm. Hold dig opdateret med de seneste versioner af frameworks som Bootstrap, da de fortsat udvikler sig for at imødekomme de stadigt skiftende krav til moderne webdesign.
Hvis du vil læse andre artikler, der ligner Skjul Elementer på Mobil: Bootstrap 3 vs 4, kan du besøge kategorien Mobil.
