What is a non-responsive layout?

Responsivt Design i Bootstrap 4: Skjul Elementer Effektivt

23/07/2024

Rating: 4.6 (10925 votes)

I en verden, hvor internettet tilgås fra et utal af enheder – fra små smartphones til store desktopskærme – er responsivt webdesign ikke længere en luksus, men en absolut nødvendighed. Som webudvikler er det afgørende at sikre, at dit indhold præsenteres optimalt, uanset skærmstørrelsen. Bootstrap 4 har længe været et foretrukket framework til at opnå netop dette, men nogle gange støder man på udfordringer, især når det kommer til at styre synligheden af elementer på meget små skærme. En af de mest almindelige spørgsmål, der opstår, er omkring 'xs' (ekstra lille) breakpoint og hvordan man specifikt kan skjule eller vise indhold for denne skærmstørrelse.

Is Bootstrap designed to work like that?
@Monkviper Bootstrap isn't designed to work like that. The col-sm-4 class is designed to make it 33.3% only at small and above, not small and below. you can include all of the classes that apply if you want it to be 33% at small size you do col-sm-4, but if you want it to be say 66% at medium size you would do col-md-8.

Denne artikel vil dykke ned i Bootstrap 4's tilgang til responsivt design, med særligt fokus på de kraftfulde display utility klasser. Vi vil udforske, hvordan du kan opnå præcis kontrol over dine elementers synlighed, fra den mindste mobilskærm til den største desktop, og adressere den gængse forvirring omkring 'xs' breakpoint. Uanset om du er ny til Bootstrap eller en erfaren bruger, der søger at finjustere din responsive strategi, vil denne guide give dig den viden og de værktøjer, du behøver for at skabe en uovertruffen mobilvenlighed på dine websites.

Indholdsfortegnelse

Forståelse af Bootstrap 4's Breakpoints og Responsivitet

Bootstrap 4 introducerede en forfinet tilgang til responsivitet sammenlignet med sine forgængere. Hvor Bootstrap 3 havde specifikke klasser som .visible-xs og .hidden-sm, har Bootstrap 4 konsolideret og strømlinet dette med et mere intuitivt og "mobile-first"-princip. Dette betyder, at alle grundlæggende styles, som f.eks. display, typografi og gitter, er designet til at fungere bedst på små skærme som standard, og derefter skaleres opad.

De primære breakpoints i Bootstrap 4 er:

  • Small (sm): 576px og opefter
  • Medium (md): 768px og opefter
  • Large (lg): 992px og opefter
  • Extra large (xl): 1200px og opefter

Bemærk, at der ikke er en eksplicit 'xs' (ekstra lille) præfiks for utility klasser. Dette skyldes det "mobile-first"-princip. Klasser uden et breakpoint-præfiks (f.eks. .d-none eller .col-12) gælder for alle skærmstørrelser fra 'xs' (0px) og opefter. Hvis du vil have en specifik adfærd, der starter ved 'sm' eller højere, tilføjer du det relevante præfiks.

De Kraftfulde Display Utility Klasser i Bootstrap 4

I stedet for de gamle .hidden-* og .visible-* klasser, bruger Bootstrap 4 nu display utility klasser, som er mere fleksible og kraftfulde. Disse klasser er baseret på CSS's display-egenskab og giver dig mulighed for at kontrollere, hvordan et element vises (eller ikke vises) på forskellige breakpoints.

De mest almindelige display utility klasser er:

  • .d-none: Skjuler et element (display: none;)
  • .d-inline: Viser et element som inline (display: inline;)
  • .d-inline-block: Viser et element som inline-block (display: inline-block;)
  • .d-block: Viser et element som block (display: block;)
  • .d-flex: Viser et element som flex-container (display: flex;)

Du kan kombinere disse med et breakpoint-præfiks for at anvende dem fra et specifikt breakpoint og opefter. For eksempel:

  • .d-sm-none: Skjuler elementet fra 'sm' og opefter.
  • .d-md-block: Viser elementet som block fra 'md' og opefter.
  • .d-lg-flex: Viser elementet som flex fra 'lg' og opefter.

Det vigtigste at huske er, at disse klasser anvender sig selv fra det angivne breakpoint og opad, medmindre de overskrives af en anden klasse ved et højere breakpoint. Hvis du vil skjule noget på små skærme, men vise det på større, skal du tænke "mobile-first": skjul det som standard, og vis det derefter, når skærmen er stor nok.

Sådan Skjuler Du Elementer på Specifikke Skærmstørrelser (f.eks. XS og SM)

Nu til kernen af problemet: hvordan skjuler man et element specifikt for 'xs' og 'sm' skærmstørrelser, men viser det på 'md' og opefter? Dette er et meget almindeligt scenarie, og løsningen er elegant i Bootstrap 4's system.

Som nævnt, gælder en klasse uden præfiks (f.eks. .d-none) for 'xs' og alle større skærmstørrelser. For at skjule et element på 'xs' og 'sm', og derefter vise det fra 'md' og opefter, skal du anvende følgende logik:

  1. Start med at skjule elementet som standard (dvs. for 'xs' og opefter) ved hjælp af .d-none.
  2. Overskriv derefter denne skjuling fra det breakpoint, hvor du ønsker elementet skal være synligt. I dette tilfælde, hvis du vil have det synligt fra 'md' og opefter, skal du tilføje .d-md-block (eller .d-md-inline, .d-md-flex, afhængigt af din ønskede display-type).

Eksempel: Skjul på XS og SM, Vis på MD, LG, XL

<div class="d-none d-md-block"> <!-- Dit indhold her, som kun vises fra medium skærme og opefter --> </div>

Lad os analysere den foreslåede kode fra dit spørgsmål:

<div class="col-lg-4 order-lg-1 .d-none .d-sm-block"> <!-- ... --> </div>

Her er et par ting at bemærke:

  • Du har .d-none .d-sm-block. Dette betyder: "Skjul som standard (XS), men vis som block fra SM og opefter." Hvis dit mål var at skjule på XS og SM, men vise på MD, LG, XL, så er .d-sm-block ikke tilstrækkeligt, da det vil vise elementet fra SM og opefter. Du skal bruge .d-md-block, som vist ovenfor.
  • Undgå at bruge punktum (.) foran klassenavne inde i class=""-attributten. Det skal være class="d-none d-sm-block", ikke class=".d-none .d-sm-block".

Hvis du ville skjule elementet kun på 'xs', men vise det fra 'sm' og opefter, ville du bruge .d-none d-sm-block. Dette er præcis, hvad din oprindelige løsning gjorde, men det løste ikke problemet med at skjule på både 'xs' og 'sm'.

Praktiske Eksempler og Typiske Scenarier

For at cementere forståelsen, lad os se på nogle flere praktiske eksempler på, hvordan du kan manipulere synlighed med Bootstrap 4 display utilities:

Skjul kun på XS (ekstra lille)

<div class="d-none d-sm-block"> <!-- Dette indhold er skjult på XS, men synligt fra SM og opefter --> </div>

Dette er den korrekte måde at skjule noget for de allermindste skærme og vise det på alle andre. Husk, .d-none sætter display: none som standard for 0px og opefter, og .d-sm-block overskriver det til display: block fra 576px og opefter.

Skjul på XS, SM, MD, men vis på LG og XL

<div class="d-none d-lg-block"> <!-- Dette indhold er kun synligt på store skærme (LG og XL) --> </div>

Her anvendes .d-none til at skjule elementet på alle skærme som standard, og .d-lg-block overskriver denne adfærd, så elementet vises som en blok fra 'lg' breakpoint (992px) og opefter.

Vis kun på XS og SM, skjul på MD, LG, XL

<div class="d-block d-md-none"> <!-- Dette indhold er kun synligt på små og mellemstore skærme (XS og SM) --> </div>

Her er logikken omvendt. .d-block får elementet til at vises som en blok på alle skærme som standard. .d-md-none overskriver dette og skjuler elementet fra 'md' breakpoint (768px) og opefter.

Oversigt over Display Utility Klasser og Deres Effekt

Denne tabel opsummerer de mest almindelige display utility klasser og deres effekt på forskellige skærmstørrelser:

KlasseXS (<576px)SM (≥576px)MD (≥768px)LG (≥992px)XL (≥1200px)
.d-noneSkjultSkjultSkjultSkjultSkjult
.d-none d-sm-blockSkjultSynligSynligSynligSynlig
.d-none d-md-blockSkjultSkjultSynligSynligSynlig
.d-block d-md-noneSynligSynligSkjultSkjultSkjult
.d-block d-lg-noneSynligSynligSynligSkjultSkjult

Optimering og Bedste Praksis for Responsivt Design

Udover at mestre display utility klasser, er der flere generelle principper, der kan hjælpe dig med at opbygge et robust og flydende responsivt design i Bootstrap 4:

  • Mobile-First Tankegang: Design og kode altid for den mindste skærm først, og skaler derefter op. Dette forenkler processen og sikrer en god baseline-oplevelse.
  • Brug af Grid Systemet: Bootstrap's gitter system (.col-* klasser) er fundamentet for responsivt layout. Udnyt det fuldt ud til at arrangere dit indhold.
  • Undgå Unødvendig Skjuling: Selvom det er nemt at skjule elementer, skal du overveje, om indholdet virkelig er irrelevant for mindre skærme. Nogle gange er det bedre at omstrukturere eller simplificere indholdet frem for at fjerne det helt. Skjulte elementer indlæses stadig af browseren, hvilket kan påvirke ydeevnen.
  • Test på Rigtige Enheder: Browserudviklerværktøjer er gode, men intet slår at teste din hjemmeside på rigtige smartphones og tablets for at fange nuancer i brugeroplevelsen.
  • Tilgængelighed: Når du skjuler indhold, skal du overveje, hvordan det påvirker brugere med skærmlæsere. display: none; skjuler indhold fra skærmlæsere, hvilket ofte er ønskeligt for rent visuelle elementer.

Ofte Stillede Spørgsmål om Responsivitet i Bootstrap 4

Hvad er forskellen på .d-none og .invisible?

.d-none sætter display: none;, hvilket fjerner elementet fra DOM'et, så det hverken optager plads eller er tilgængeligt for skærmlæsere. .invisible sætter visibility: hidden;, hvilket gør elementet usynligt, men det optager stadig plads i layoutet og kan stadig læses af skærmlæsere. Brug .d-none, når du vil fjerne elementet helt, og .invisible, når du vil skjule det visuelt, men bevare dets plads i layoutet og tilgængelighed for skærmlæsere (f.eks. til interaktive elementer, der midlertidigt skal skjules).

Kan jeg bruge de gamle .hidden-* klasser fra Bootstrap 3 i Bootstrap 4?

Det anbefales stærkt ikke. Bootstrap 4 har fjernet de gamle responsive utility klasser til fordel for de nye display utility klasser (.d-*). Brug af de gamle klasser kan føre til uforudsigelig adfærd eller slet ingen effekt, da de ikke er en del af Bootstrap 4's kerne. Selvom du kan finde ældre ressourcer, der refererer til dem, er det bedst at holde sig til de officielle Bootstrap 4 display utility klasser for fremtidssikret og korrekt kode.

Hvordan skjuler jeg et element kun på et enkelt breakpoint, f.eks. kun på MD?

Dette kræver en kombination af klasser. Hvis du f.eks. vil skjule et element kun på 'md' skærmstørrelse, men vise det på alle andre, skal du tænke i intervaller:

<div class="d-block d-md-none d-lg-block"> <!-- Dette indhold er skjult KUN på medium skærme --> </div>

Her betyder .d-block, at det er synligt på 'xs' og 'sm'. .d-md-none skjuler det fra 'md' og opefter. Men vi vil have det synligt igen fra 'lg', så .d-lg-block overskriver .d-md-none fra 'lg' og opefter.

Er der en måde at skjule elementer baseret på enhedstype (f.eks. kun tablets) i stedet for skærmstørrelse?

Bootstrap's responsive system er primært baseret på skærmstørrelse (viewport bredde), ikke enhedstype. Selvom der er en stærk korrelation mellem f.eks. en smartphone og en lille skærmbredde, er det ikke en direkte "device detection". Dette er generelt en god praksis, da det giver en mere robust løsning, der ikke afhænger af at identificere specifikke enheder, som kan variere. Hvis du absolut har brug for enhedsbaseret logik, skal det implementeres via JavaScript, men det anbefales sjældent for layoutjusteringer.

Påvirker skjulte elementer SEO?

Generelt set kan elementer med display: none; eller visibility: hidden; stadig indekseres af søgemaskiner, men de kan potentielt påvirke, hvordan søgemaskiner opfatter indholdets relevans og kvalitet. Google anbefaler at undgå at skjule vigtigt indhold, der er beregnet til at blive set af alle brugere. Hvis du skjuler indhold, som kun er relevant for en specifik skærmstørrelse (f.eks. et stort banner på desktop, der ikke passer på mobil), er det normalt acceptabelt. Misbrug af teknikken til at "stuffe" nøgleord eller lignende vil dog blive opfattet negativt.

At mestre display utility klasserne i Bootstrap 4 er essentielt for at skabe et effektivt og responsivt webdesign. Ved at forstå principperne bag "mobile-first" og hvordan breakpoints fungerer, kan du præcist styre, hvordan dit indhold præsenteres på tværs af alle enheder. Husk altid at teste din implementering på tværs af forskellige skærmstørrelser og enheder for at sikre en fejlfri brugeroplevelse. Med de rigtige værktøjer og en solid forståelse af Bootstrap 4's responsive kapabiliteter er du godt rustet til at bygge moderne, tilgængelige og brugervenlige websites.

Hvis du vil læse andre artikler, der ligner Responsivt Design i Bootstrap 4: Skjul Elementer Effektivt, kan du besøge kategorien Teknologi.

Go up