Can Bootstrap 4 hide elements based on screen size?

Mestring af Responsiv Skjuling i Bootstrap

22/11/2022

Rating: 4.34 (15835 votes)

I en verden domineret af forskellige skærmstørrelser – fra små smartphones til store desktop-skærme – er responsivt webdesign ikke længere en luksus, men en absolut nødvendighed. Bootstrap har længe været et foretrukket framework for at bygge responsive layouts, og en central del af dette er evnen til at skjule eller vise elementer, herunder kolonner, baseret på skærmbredden. Denne guide vil dykke ned i, hvordan du effektivt håndterer responsiv skjuling i både Bootstrap 3 og den nyere Bootstrap 4, og give dig de værktøjer, du skal bruge for at skabe et fejlfrit og brugervenligt design.

How can I hide an element only on a given interval of screen sizes?
To show an element only on a given interval of screen sizes you can combine one .d-*-none class with a .d-*-* class, for example .d-none .d-md-block .d-xl-none will hide the element for all screen sizes except on medium and large devices. Change the display value of elements when printing with our print display utility classes.

At kunne kontrollere, hvilke dele af dit indhold der er synlige på forskellige enheder, er afgørende for at optimere brugeroplevelsen. Det handler ikke kun om æstetik, men også om performance og navigation. Et element, der er perfekt på en stor skærm, kan være forstyrrende eller endda ødelæggende for layoutet på en lille mobilskærm. Derfor er forståelsen af de forskellige metoder til at skjule elementer i Bootstrap en fundamental færdighed for enhver webudvikler.

Indholdsfortegnelse

Hvorfor skjule elementer responsivt?

Grunden til at skjule elementer på specifikke skærmstørrelser er mangefacetteret. Først og fremmest forbedrer det brugeroplevelsen betydeligt. På en mobil enhed har du begrænset plads, og det er vigtigt at prioritere indholdet. Unødvendige kolonner, store billeder eller komplekse navigationsmenuer kan hurtigt overvælde brugeren og gøre siden svær at anvende. Ved at skjule mindre vigtige elementer frigør du plads til det essentielle indhold, hvilket gør siden lettere at læse og navigere.

For det andet kan det have en positiv indvirkning på sidens ydeevne. Selvom skjulte elementer stadig indlæses i DOM'en, kan færre visuelt tunge elementer (selvom de er skjult med display: none;) potentielt reducere renderingstiden og dermed forbedre sidens hastighed, især på enheder med begrænsede ressourcer. Endelig giver responsiv skjuling dig mulighed for at skræddersy indholdet til forskellige kontekster. Et analysepanel kan være yderst relevant for en administrator på en desktop, men fuldstændig irrelevant og forstyrrende for en mobilbruger, der blot ønsker at tjekke en hurtig status.

Skjul kolonner i Bootstrap 3: Den 'gamle' metode

Bootstrap 3 introducerede en række bekvemme klasser til at skjule elementer baseret på skærmstørrelse. Disse klasser var intuitive og lette at bruge, men de havde også en vis redundans, især hvis man skulle skjule et element på flere forskellige breakpoints. De mest almindelige klasser var:

  • .hidden-xs: Skjuler elementet på ekstra små skærme (under 768px).
  • .hidden-sm: Skjuler elementet på små skærme (768px og op).
  • .hidden-md: Skjuler elementet på mellemstore skærme (992px og op).
  • .hidden-lg: Skjuler elementet på store skærme (1200px og op).

Forestil dig, at du har en kolonne, du vil skjule på alt andet end ekstra store skærme. I Bootstrap 3 ville du gøre det således:

<div class="row"> <div class="col-lg-12 col-xl-9"> <!-- Hovedindhold --> </div> <div class="col-xl-3 hidden-lg hidden-md hidden-sm hidden-xs"> <!-- Denne kolonne skjules på alle skærme undtagen xl --> </div> </div>

Dette eksempel viser tydeligt, hvordan man skulle definere hver enkelt viewport-størrelse, man ønskede at skjule kolonnen i. Det virkede, men det kunne hurtigt blive en lang og gentagende række af klasser.

Overgangen til Bootstrap 4: Nye udfordringer og løsninger

Med Bootstrap 4 skete der en markant ændring i måden, man håndterer responsiv skjuling på. De velkendte .hidden-* klasser blev fjernet. Dette skabte i starten en del forvirring og frustration blandt udviklere, der var vant til den gamle syntax. Hovedårsagen til fjernelsen var, at de ofte kom i konflikt med jQuery's $(...).hide() og $(...).show() metoder, som internt også manipulerer elementers display-egenskab. For at undgå sådanne konflikter og for at skabe et mere ensartet og fleksibelt system introducerede Bootstrap 4 et nyt sæt af display-utility klasser.

De nye display-klasser er mere granulære og bygger på princippet om at kontrollere elementets display-egenskab direkte. Dette giver en utrolig fleksibilitet, men kræver en lidt anden tankegang. I stedet for at sige "skjul mig på XS", siger man nu "vis mig som block på SM, men ellers none".

How to hide a column based on column width in Bootstrap?
Since Bootstrap V4 the hidden-X classes have been removed. In order to hide a column based on the column width use d-none d-X-block. Basically you simply turn off the display of the size you wish to hide then set the display of the bigger size. Taken from this answer. except if you want d-flex or d-md-flex, d-lg-flex and so on...

d-none: Hvorfor det er anderledes i Bootstrap 4

I Bootstrap 4 er den primære klasse til at skjule et element .d-none. Denne klasse sætter simpelthen display: none; på elementet. Det smarte kommer ind, når du kombinerer den med responsive breakpoints. Notation for display utility-klasser er som følger:

  • .d-{value} for ekstra små skærme (xs - fra 0px og op). Her er der ingen breakpoint-forkortelse, da den gælder fra min-width: 0;.
  • .d-{breakpoint}-{value} for sm (small), md (medium), lg (large) og xl (extra large).

Hvor value kan være en af følgende:

  • none
  • inline
  • inline-block
  • block
  • table
  • table-cell
  • table-row
  • flex
  • inline-flex

Disse medieforespørgsler påvirker skærmbredder med det givne breakpoint eller større. For eksempel vil .d-lg-none sætte display: none; på både lg og xl skærme. Dette er et vigtigt koncept at forstå: klassen gælder for det definerede breakpoint og opad.

Lad os se på eksempler fra Bootstrap 3 og sammenligne med Bootstrap 4. En af de mest almindelige frustrationer i Bootstrap 4 var at skjule kolonner på små skærme, da det krævede en blanding af d- klasser og col- klasser. I Bootstrap 3 kunne man skrive (et mere udførligt eksempel):

<div class="row"> <div class="hidden-xs col-sm-6 col-md-6 col-lg-6"> Skjul mig på små skærme </div> <div class="col-xs-12 col-sm-6 col-md-6 col-lg-6"> Vis mig kun på små skærme </div> </div>

I Bootstrap 4 ville man i stedet gøre det således:

<div class="row"> <div class="d-none d-sm-block col-sm-6 col-md-6 col-lg-6"> Skjul mig på små skærme </div> <div class="d-block d-sm-none col-xs-12 col-sm-6 col-md-6 col-lg-6"> Vis mig kun på små skærme </div> </div>

Her kan man se, at .d-none .d-sm-block betyder: skjul elementet som standard (xs), men vis det som block fra sm breakpoint og opad. Omvendt betyder .d-block .d-sm-none: vis elementet som standard (xs), men skjul det fra sm breakpoint og opad. Det kræver lidt mere at skrive, men giver også mere præcis kontrol.

Effektiv brug af display-klasser i Bootstrap 4

Bootstrap 4's display-utility klasser er utroligt kraftfulde, når de bruges korrekt. De tillader dig at skifte display-værdien af et element responsivt. Her er nogle praktiske eksempler:

  • .d-inline og .d-block: Disse ændrer et elements display-type globalt, uanset skærmstørrelse.
  • <div class="d-inline p-2 bg-primary text-white">d-inline</div> <div class="d-inline p-2 bg-dark text-white">d-inline</div> <span class="d-block p-2 bg-primary text-white">d-block</span> <span class="d-block p-2 bg-dark text-white">d-block</span>
  • .d-none: Skjuler elementet på alle skærmstørrelser.
  • .d-sm-none: Skjuler elementet på små skærme (sm) og opad.
  • .d-lg-block: Viser elementet som en blok fra store skærme (lg) og opad.

Skjul elementer på specifikke skærmstørrelser

For at skjule elementer på en række skærmstørrelser, men vise dem på andre, kan du kombinere .d-none med .d-{breakpoint}-{value} klasser. Dette er ofte det, der skaber mest forvirring, men med et par eksempler bliver det klart:

SkærmstørrelseKlasse til at skjuleKlasse til at viseEksempel på kombinationEffekt
Skjult på alle.d-noneN/A<div class="d-none">Altid skjult.
Skjult kun på xs.d-none .d-sm-block.d-block .d-sm-none<div class="d-none d-sm-block">Skjult på xs, synlig fra sm og op.
Skjult kun på sm.d-sm-none .d-md-block.d-block .d-sm-none .d-md-block<div class="d-none d-sm-block d-md-none d-lg-block">Skjult på xs, lg, xl. Synlig på sm, md.
Skjult kun på md.d-md-none .d-lg-blockN/A<div class="d-none d-md-block d-lg-none">Skjult på xs, sm, lg, xl. Synlig på md.
Skjult kun på lg.d-lg-none .d-xl-blockN/A<div class="d-none d-lg-block d-xl-none">Skjult på xs, sm, md, xl. Synlig på lg.
Skjult kun på xl.d-xl-noneN/A<div class="d-none d-xl-block">Skjult på xs, sm, md, lg. Synlig på xl.
Synlig på alleN/A.d-block<div class="d-block">Altid synlig som blok.

Et klassisk eksempel på at skjule et element på et interval af skærmstørrelser er .d-none .d-md-block .d-xl-none. Dette vil skjule elementet for alle skærmstørrelser, undtagen på mellemstore (md) og store (lg) enheder. Det er en kraftfuld kombination, der giver dig finmasket kontrol over dit layout.

Her er yderligere et par eksempler, der illustrerer princippet:

<!-- Skjul på skærme bredere end lg (dvs. kun xl) --> <div class="d-lg-none"> Skjuler på lg og xl </div> <!-- Skjul på skærme mindre end lg (dvs. xs, sm, md) --> <div class="d-none d-lg-block"> Skjuler på xs, sm, md </div>

Sammenligning: Bootstrap 3 vs. Bootstrap 4 skjuleklasser

For at opsummere forskellene mellem Bootstrap 3 og Bootstrap 4's tilgang til responsiv skjuling, lad os se på en direkte sammenligning:

FormålBootstrap 3 KlasserBootstrap 4 KlasserBemærkninger
Skjul på xs.hidden-xs.d-none .d-sm-blockBS4: Skjult som standard, vist fra sm og op.
Skjul på sm.hidden-sm.d-sm-none .d-md-blockBS4: Skjult fra sm, vist fra md og op.
Skjul på md.hidden-md.d-md-none .d-lg-blockBS4: Skjult fra md, vist fra lg og op.
Skjul på lg.hidden-lg.d-lg-none .d-xl-blockBS4: Skjult fra lg, vist fra xl og op.
Skjul på xl (kun BS4)N/A.d-xl-noneBS4: Skjult fra xl og op.
Skjul på xs og ned.hidden-xs.d-none .d-sm-blockSamme som 'Skjul på xs'.
Skjul på xs og op.hidden-xs hidden-sm hidden-md hidden-lg (meget verbose).d-noneBS4: Simpelthen skjult på alle skærme.
Skjul fra lg og op.hidden-lg.d-lg-noneBS4: Skjult fra lg og op (inkl. xl).
Skjul fra md og ned (dvs. xs, sm, md).hidden-md-up (kun BS3 lignende).d-none .d-lg-blockBS4: Skjult på xs, sm, md. Vist fra lg og op.

Som det fremgår af tabellen, er Bootstrap 4's tilgang mere baseret på at definere, hvornår et element skal vises, i stedet for hvornår det skal skjules. Dette giver en mere logisk og ofte mere kraftfuld kontrol, men kræver en tilvænning. Husk altid, at Bootstrap 4's breakpoint-klasser (-sm, -md, -lg, -xl) gælder for det definerede breakpoint og alle bredere skærme.

Skjul ved udskrivning (Print Utilities)

Udover at skjule elementer på skærmen, tilbyder Bootstrap også utility-klasser til at kontrollere, hvordan elementer vises eller skjules, når en side udskrives. Dette er utrolig nyttigt for at fjerne unødvendige navigationsmenuer, reklamer eller andre elementer, der ikke giver mening på et udskrevet dokument.

Disse klasser følger den samme logik som de responsive display-klasser, blot med et -print- præfiks:

  • .d-print-none: Skjuler elementet, når siden udskrives.
  • .d-print-inline
  • .d-print-inline-block
  • .d-print-block
  • .d-print-table
  • .d-print-table-row
  • .d-print-table-cell
  • .d-print-flex
  • .d-print-inline-flex

Du kan kombinere disse med de almindelige display-klasser. For eksempel:

<!-- Dette element vises kun på skærmen, ikke ved udskrivning --> <div class="d-print-none"> Skjul mig ved udskrivning </div> <!-- Dette element vises kun ved udskrivning, ikke på skærmen --> <div class="d-none d-print-block"> Vis mig kun ved udskrivning </div>

Bedste praksis for responsivt design

At mestre responsiv skjuling er en nøglekomponent i et robust responsivt design. Her er nogle bedste praksis, du bør overveje:

  1. Tænk mobil først: Start med at designe for den mindste skærm og arbejd dig opad. Det er ofte lettere at tilføje indhold og kompleksitet, end at fjerne det.
  2. Minimer unødvendig skjuling: Selvom du skjuler et element, indlæses det stadig af browseren. Overvej om elementet overhovedet er nødvendigt på den pågældende skærmstørrelse, eller om det kan fjernes helt fra DOM'en for at forbedre performance.
  3. Test på rigtige enheder: Selvom browserens udviklerværktøjer er gode, er intet som at teste dit design på rigtige smartphones og tablets for at opfange potentielle problemer.
  4. Brug semantisk HTML: Selvom du bruger Bootstrap-klasser til styling og layout, skal du stadig stræbe efter at bruge semantisk korrekt HTML. Dette forbedrer tilgængeligheden og vedligeholdelsen af din kode.
  5. Hold det konsistent: Sørg for, at din tilgang til at skjule og vise elementer er konsistent på tværs af dit website. Dette gør det lettere for andre udviklere (og dig selv i fremtiden) at forstå og vedligeholde koden.

Ofte Stillede Spørgsmål om responsiv skjuling i Bootstrap

Hvorfor fjernede Bootstrap 4 de gamle .hidden-* klasser?

De .hidden-* klasser i Bootstrap 3 blev fjernet primært for at undgå konflikter med jQuery's .hide() og .show() metoder. Bootstrap 4 introducerede i stedet et mere robust og fleksibelt sæt af .d-* (display utility) klasser, som giver mere granulær kontrol over elementers display-egenskaber.

Why is D-none a problem in Bootstrap 4?
The issue is when using the d-none the width of row is reduced. Hiding columns on small screens is hard and inconsistent in Bootstrap 4 compared to Bootstrap 3 because 1) you have to use "d-" classes and 2) mix them with "col-" classes. In Bootstrap 3, I could do like this (verbose example):

Kan jeg skjule et element på *kun* én bestemt skærmstørrelse?

Ja, det kan du. Du skal kombinere .d-none med .d-{breakpoint}-block og .d-{next-breakpoint}-none. For eksempel, for at vise et element kun på medium skærme (md) og skjule det på alle andre (xs, sm, lg, xl), ville du bruge: <div class="d-none d-md-block d-lg-none">...</div>.

Hvad er forskellen på .d-none og visibility: hidden;?

.d-none (som oversættes til display: none;) fjerner elementet fuldstændigt fra dokumentets flow, hvilket betyder, at det ikke optager nogen plads i layoutet. visibility: hidden; gør derimod elementet usynligt, men det optager stadig sin oprindelige plads i layoutet, og påvirker derfor stadig andre elementers position. For responsiv skjuling, hvor du ønsker at fjerne et element fra layoutet for at optimere plads, er .d-none den korrekte tilgang.

Hvad hvis jeg vil skjule et element, men bevare dets plads i layoutet?

Hvis du ønsker at skjule et element, men bevare den plads, det optager i layoutet, kan du ikke bruge .d-none. I stedet kan du anvende CSS-egenskaber som visibility: hidden;, opacity: 0; eller pointer-events: none;. Bootstrap har dog ikke direkte utility-klasser, der svarer til visibility: hidden; for responsive breakpoints, så du skal muligvis skrive din egen brugerdefinerede CSS med medieforespørgsler for dette specifikke scenarie.

Kan jeg skjule et element på et interval af skærmstørrelser, f.eks. mellem small og large?

Ja, det kan du. For at vise et element på xs og xl, men skjule det på sm, md og lg, ville du bruge: <div class="d-block d-sm-none d-xl-block">...</div>. Her vises det som standard (xs), skjules fra sm (inkl. sm, md, lg), og vises igen fra xl.

At mestre responsiv skjuling i Bootstrap er en essentiel færdighed, der giver dig mulighed for at skabe dynamiske og brugervenlige layouts. Uanset om du arbejder med Bootstrap 3 eller 4, er principperne om at tilpasse indhold til forskellige skærmstørrelser afgørende for et moderne webdesign. Ved at forstå og anvende de korrekte klasser kan du sikre, at dit website ser fantastisk ud og fungerer optimalt på enhver enhed.

Hvis du vil læse andre artikler, der ligner Mestring af Responsiv Skjuling i Bootstrap, kan du besøge kategorien Teknologi.

Go up