What is CSS @media rule?

Responsivt Design: @media Reglen og Breddebegrænsninger i CSS

02/03/2026

Rating: 4.81 (10019 votes)

I dagens digitale verden er det afgørende, at websites ser fantastiske ud og fungerer fejlfrit på alle enheder – fra store desktop-skærme til små smartphones. Dette kaldes responsivt webdesign, og kernen i at opnå dette ligger i to kraftfulde CSS-koncepter: @media-reglen og breddebegrænsningsegenskaberne som max-width og min-width. Disse værktøjer giver dig mulighed for at kontrollere, hvordan dit indhold præsenteres, uanset skærmstørrelse eller orientering, og sikrer en optimal brugeroplevelse for alle besøgende. Lad os dykke ned i, hvordan du kan udnytte disse CSS-egenskaber til at bygge moderne, fleksible og brugervenlige websites.

What is the difference between a media query and a desktop query?
Indholdsfortegnelse

Hvad er CSS @media-reglen?

CSS @media-reglen er en fundamental del af responsive webdesign. Den bruges i såkaldte medieforespørgsler til at anvende forskellige stilarter baseret på forskellige medietyper eller enheder. Forestil dig, at du ønsker, at dit website skal se ud på én måde på en computer, men have et helt andet layout, når det vises på en smartphone eller printes ud. Det er præcis, hvad @media-reglen gør muligt.

Hvordan fungerer medieforespørgsler?

Medieforespørgsler kan bruges til at tjekke en lang række forhold ved brugerens enhed eller browser. Dette inkluderer:

  • Viewportets bredde og højde (det synlige område i browseren).
  • Enhedens bredde og højde (den faktiske fysiske skærmstørrelse).
  • Orientering (om tablet'en/telefonen er i liggende (landscape) eller stående (portrait) tilstand).
  • Opløsning (f.eks. dpi eller dpcm).

Ved at bruge medieforespørgsler kan du levere et skræddersyet stylesheet til desktops, laptops, tablets og mobiltelefoner, hvilket er hjørnestenen i responsivt webdesign. Du kan også specificere, at visse stilarter kun er til printede dokumenter eller til skærmlæsere.

Syntaks for @media-reglen

Den grundlæggende syntaks for @media-reglen er som følger:

@media not|only medietype and (medieegenskab and|or|not medieegenskab) { CSS-kode; }

Lad os se nærmere på nøgleordene:

  • not: Dette nøgleord inverterer betydningen af hele medieforespørgslen. Hvis du f.eks. skriver @media not screen, vil stilarterne gælde for alle medietyper undtagen skærme.
  • only: Dette nøgleord forhindrer ældre browsere, der ikke understøtter medieforespørgsler med medieegenskaber, i at anvende de specificerede stilarter. Det har ingen effekt på moderne browsere. Det bruges ofte for at sikre bagudkompatibilitet.
  • and: Dette nøgleord kombinerer en medietyper med en medieegenskab eller flere medieegenskaber. Det fungerer som en logisk 'OG'-operator, hvilket betyder, at alle betingelser skal være opfyldt, for at stilarterne anvendes.

Disse nøgleord er alle valgfrie. Men hvis du bruger not eller only, skal du også angive en medietyper.

Forskellige måder at bruge medieforespørgsler på

Udover at indlejre @media-reglen direkte i dit CSS-stylesheet, kan du også linke til forskellige stylesheets baseret på medieforespørgsler direkte i dit HTML-dokument. Dette kan være en effektiv måde at organisere dine stilarter på:

<link rel="stylesheet" media="screen and (min-width: 900px)" href="widescreen.css"> <link rel="stylesheet" media="screen and (max-width: 600px)" href="smallscreen.css">

Her vil widescreen.css kun blive indlæst, hvis skærmbredden er mindst 900px, og smallscreen.css hvis den er maksimalt 600px.

Medietyper: Hvilken type enhed?

En medietyper beskriver den generelle kategori af en enhed. De mest almindelige er:

VærdiBeskrivelse
allStandard. Bruges til alle medietyper.
printBruges til printere (når dokumentet skal printes).
screenBruges til computerskærme, tablets, smartphones osv.
speechBruges til skærmlæsere, der læser indholdet op.

Medieegenskaber: Mere specifikke detaljer

Medieegenskaber giver mere specifikke detaljer til medieforespørgsler ved at tillade test af en specifik funktion af brugeragenten eller displayenheden. De er valgfrie, og hvert udtryk for en medieegenskab skal omgives af parenteser. Her er nogle af de mest nyttige og almindelige:

  • width / min-width / max-width: Bredden af viewportet. Disse er de mest brugte til responsivt design.
  • height / min-height / max-height: Højden af viewportet.
  • orientation: Orienteringen af viewportet (f.eks. landscape for liggende eller portrait for stående).
  • resolution: Opløsningen af outputenheden (f.eks. dpi eller dpcm).
  • prefers-color-scheme: Registrerer, om brugeren foretrækker et lyst eller mørkt farveskema (light eller dark).
  • hover: Registrerer, om den primære inputmekanisme tillader brugeren at holde musen over elementer (f.eks. en mus vs. en touchskærm).
  • pointer: Registrerer, om den primære inputmekanisme er en pegeredskab, og hvor præcis den er.
  • display-mode: Den tilstand, en applikation vises i (f.eks. fullscreen).

Praktiske eksempler på @media-reglen

For bedre at forstå @media-reglen, lad os se på nogle konkrete eksempler:

Eksempel 1: Skift baggrundsfarve baseret på bredde

Dette eksempel ændrer baggrundsfarven på <body>-elementet til 'lyseblå', når browserens vindue er 600px bredt eller mindre. Det er et klassisk eksempel på en breakpoint.

@media only screen and (max-width: 600px) { body { background-color: lightblue; } }

Eksempel 2: Skjul et element på små skærme

Du kan også bruge medieforespørgsler til at skjule elementer, der er unødvendige eller forstyrrende på mindre skærme.

@media screen and (max-width: 600px) { div.example { display: none; } }

Eksempel 3: Flere breakpoints for baggrundsfarve

Her ser vi, hvordan du kan definere flere breakpoints for at opnå en mere nuanceret responsivitet. Baggrundsfarven ændres baseret på forskellige breddeintervaller.

body { background-color: lightblue; /* Standard for små skærme (<400px) */ } @media screen and (min-width: 400px) { body { background-color: lightgreen; /* Mellemstore skærme (400px-799px) */ } } @media screen and (min-width: 800px) { body { background-color: lavender; /* Store skærme (>=800px) */ } }

Eksempel 4: Responsiv navigationsmenu

En almindelig anvendelse er at transformere en horisontal navigationsmenu til en vertikal stak på små skærme.

@media screen and (max-width: 600px) { .topnav a { float: none; width: 100%; } }

Eksempel 5: Responsivt kolonne-layout

Medieforespørgsler er ideelle til at justere kolonne-layouts, så de tilpasser sig skærmstørrelsen.

/* På skærme, der er 992px brede eller mindre, gå fra fire til to kolonner */ @media screen and (max-width: 992px) { .column { width: 50%; } } /* På skærme, der er 600px brede eller mindre, stak kolonnerne oven på hinanden */ @media screen and (max-width: 600px) { .column { width: 100%; } }

Eksempel 6: Orientering (Landscape vs. Portrait)

Du kan også ændre layoutet af en side afhængigt af browserens orientering. Her sættes baggrundsfarven til lyseblå, hvis orienteringen er 'landscape'.

@media only screen and (orientation: landscape) { body { background-color: lightblue; } }

Eksempel 7: Skærm vs. Print

Bestem forskellige stilarter for, om dokumentet vises på skærmen eller printes ud.

@media screen { body { color: green; /* Grøn tekst på skærmen */ } } @media print { body { color: black; /* Sort tekst ved udskrivning */ } }

Eksempel 8: Komma-separeret liste (OR-operator)

Du kan kombinere flere medieforespørgsler med et komma. Dette fungerer som en 'ELLER'-operator, hvilket betyder, at stilarterne anvendes, hvis mindst én af betingelserne er opfyldt.

/* Når bredden er mellem 600px og 900px ELLER over 1100px - ændre udseendet af <div> */ @media screen and (max-width: 900px) and (min-width: 600px), (min-width: 1100px) { div.example { font-size: 50px; padding: 50px; border: 8px solid black; background: yellow; } }

Breddebegrænsningsegenskaber i CSS: max-width og min-width

Mens @media-reglen definerer, hvornår forskellige stilarter skal anvendes, er max-width og min-width selve værktøjerne til at styre elementers størrelse inden for disse stilarter. Disse to egenskaber er afgørende for at skabe layouts, der ikke blot reagerer på skærmstørrelse, men også opretholder en brugbar og æstetisk tiltalende form under alle forhold.

Forståelse af breddebegrænsninger

Breddebegrænsningsegenskaberne i CSS fungerer ved at sætte grænser for et elements bredde i stedet for at definere præcise dimensioner. Denne tilgang skaber langt mere fleksible layouts, der automatisk tilpasser sig forskellige skærmstørrelser og indholdskrav. De er især vigtige, fordi de hjælper med at forhindre, at elementer bliver for brede (og dermed svære at læse) på store skærme eller for smalle (og dermed ulæselige) på små skærme.

max-width egenskaben

max-width-egenskaben sætter den maksimale bredde, et element kan nå. Hvis indholdet eller den overordnede container ville gøre elementet bredere end denne værdi, stopper elementet med at vokse og opretholder i stedet den maksimale bredde. Dette er utroligt nyttigt for at forhindre, at billeder strækker sig ud over deres container, eller at tekstlinjer bliver for lange og dermed svære at læse på brede skærme.

Grundlæggende max-width syntaks:

.element { max-width: 600px; /* Elementet vil aldrig overskride 600px i bredden */ }

min-width egenskaben

min-width-egenskaben sætter den mindste bredde, et element skal opretholde. Selv hvis indholdet er mindre, eller den overordnede container er smallere, vil elementet ikke krympe under denne specificerede bredde. Dette er afgørende for at sikre, at elementer som navigationsmenuer, knapper eller billeder forbliver læselige og brugbare, selv på meget små skærme.

Grundlæggende min-width syntaks:

.element { min-width: 200px; /* Elementet vil aldrig være smallere end 200px */ }

Interaktivt eksempel: Kombination af begge egenskaber

Den virkelige styrke kommer fra at kombinere begge egenskaber. Et element med både min-width og max-width vil forsøge at overholde sin width-værdi, men vil respektere grænserne sat af min-width og max-width. Hvis width er sat til 100%, vil elementet fylde hele den tilgængelige plads, men aldrig overskride max-width eller krympe under min-width.

.fleksibel-container { padding: 20px; min-width: 200px; /* Krymper ikke under 200px */ max-width: 500px; /* Vokser ikke ud over 500px */ width: 100%; /* Foretrukken bredde, fylder tilgængelig plads */ margin: 0 auto; }

Dette skaber en flydende container, der tilpasser sig, men altid forbliver inden for definerede, brugbare grænser.

Værdityper og enheder

Både max-width og min-width accepterer forskellige værdityper, hvilket giver stor fleksibilitet:

  • Absolutte enheder:
    • px (pixels): Fast størrelse uanset skærm eller overordnet element. Meget præcis, men mindre fleksibel for responsivt design.
    • pt (points): Bruges primært til printmedier.
    • in (inches), cm (centimeter): Fysiske mål, sjældent brugt på web.
  • Relative enheder:
    • % (procenter): Relativt til det overordnede elements bredde. Meget brugbart for flydende layouts.
    • em: Relativt til elementets egen skriftstørrelse. God til at skalere elementer i forhold til tekst.
    • rem: Relativt til rod-elementets (<html>) skriftstørrelse. Giver en mere konsistent skalering på tværs af et website.
    • vw (viewport width), vh (viewport height): Relativt til viewportets dimensioner. 1vw er 1% af viewportets bredde. Ideel til at skabe designs, der skalerer direkte med browserens vindue.
  • Særlige nøgleord:
    • none: Ingen breddebegrænsning (standard for max-width).
    • initial: Nulstiller til standardværdien.
    • inherit: Arver værdien fra det overordnede element.
    • auto: Browseren beregner værdien (standard for min-width).

Almindelige anvendelsestilfælde og bedste praksis

Disse breddebegrænsninger er uundværlige i mange scenarier:

1. Responsivt containerdesign

Oprettelse af containere, der skalerer passende på tværs af enheder, er en af de mest almindelige anvendelser. Dette sikrer, at dit indhold altid er læseligt og velorganiseret.

.main-content { max-width: 1200px; /* Forhindrer overdrevent bredt indhold på store skærme */ min-width: 320px; /* Sikrer læsbarhed på små skærme, forhindrer elementer i at blive for små */ width: 100%; /* Fylder tilgængelig plads */ margin: 0 auto; /* Centrerer containeren */ padding: 0 20px; /* Tilføjer side-padding */ }

2. Billedresponsivitet

Forhindrer billeder i at ødelægge layouts og sikrer, at de altid passer inden for deres container.

How to use media queries in a mobile-first approach in HTML?
How to use media queries in a mobile-first approach in HTML ? Designing a responsive website layout that adapts to various devices and screen sizes is achievable through the use of media queries. This adaptability is defined by two key parameters: screen width and orientation. There are two primary strategies for creating a responsive website:
.responsive-image { max-width: 100%; /* Overskrider aldrig containerens bredde */ height: auto; /* Opretholder billedets billedformat */ min-width: 0; /* Tillader at billedet krymper, når det er nødvendigt */ }

3. Navigationsmenupunkter

Sikring af et ensartet udseende for navigationsknapper.

.nav-item { min-width: 100px; /* Konsekvent minimumsstørrelse for knappen */ max-width: 200px; /* Forhindrer overdrevent lange knapper */ padding: 10px 15px; text-align: center; }

4. Formularinputfelter

Oprettelse af brugbare formularfelter, der tilpasser sig.

.form-input { min-width: 200px; /* Sikrer tilstrækkelig inputplads */ max-width: 400px; /* Forhindrer overdreven bredde */ width: 100%; /* Fylder tilgængelig containerplads */ }

Integration med CSS Grid og Flexbox

Breddebegrænsninger fungerer problemfrit med moderne layoutsystemer som CSS Flexbox og CSS Grid. De supplerer hinanden for at give dig total kontrol over dine layouts.

Med CSS Flexbox

Brug min-width og max-width på flex-items for at styre deres individuelle størrelse, selvom flex-containeren forsøger at fordele pladsen.

.flex-container { display: flex; gap: 20px; flex-wrap: wrap; /* Tillader items at bryde til ny linje */ } .flex-item { flex: 1; /* Vokser for at fylde plads */ min-width: 200px; /* Krymper ikke for meget */ max-width: 400px; /* Vokser ikke for meget */ }

Med CSS Grid

I CSS Grid kan minmax()-funktionen bruges til at definere fleksible kolonne- eller rækkestørrelser, der ligner funktionaliteten af min-width og max-width.

.grid-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); /* Kolonner mellem 250px og 1fr */ gap: 20px; max-width: 1200px; /* Containerbegrænsning */ margin: 0 auto; }

Kompatibilitet med browsere

Både @media-reglen og breddebegrænsningsegenskaberne (max-width, min-width) har fremragende browserunderstøttelse på tværs af alle moderne browsere, herunder Chrome, Firefox, Safari, Edge og endda ældre versioner af Internet Explorer. Du kan trygt implementere disse i dine projekter uden større bekymringer om kompatibilitet.

Almindelige faldgruber og fejlfinding

Selvom disse egenskaber er kraftfulde, er der et par almindelige faldgruber, du bør være opmærksom på:

1. Box Model Overvejelser

Husk, at breddebegrænsninger som standard gælder for indholdsboksen. Hvis du har padding eller border, vil disse blive lagt til den samlede bredde, medmindre du justerer box-modellen.

.problematisk { max-width: 300px; padding: 20px; /* Lægger 40px til den samlede bredde (20px på hver side) */ border: 2px solid; /* Lægger 4px til den samlede bredde (2px på hver side) */ /* Total renderet bredde: 344px, ikke 300px! */ }

Løsning: Brug box-sizing: border-box; til at inkludere padding og borders i breddeberegningerne. Dette er en bedste praksis for moderne CSS.

.korrekt { max-width: 300px; padding: 20px; border: 2px solid; box-sizing: border-box; /* Nu er den samlede bredde præcis 300px */ }

2. Konflikterende breddeegenskaber

Forståelse af egenskabernes rækkefølge (præcedens) forhindrer layoutproblemer. min-width har højeste præcedens, derefter max-width, og til sidst width.

.element { width: 400px; /* Ønsket bredde */ min-width: 500px; /* Tvinger minimum 500px */ max-width: 300px; /* Ville begrænse til 300px, men min-width vinder */ /* Faktisk bredde: 500px */ }

I dette eksempel vil elementets faktiske bredde være 500px, fordi min-width overtrumfer både width og max-width.

Avancerede teknikker og overvejelser

Med en solid forståelse af @media-reglen og breddebegrænsningerne kan du udforske mere avancerede teknikker:

Flydende typografi-containere

Kombiner breddebegrænsninger med viewport-enheder for at skabe en virkelig responsiv typografi, der skalerer smukt med skærmen, men aldrig bliver ulæseligt.

.fluid-container { width: 90vw; /* 90% af viewport-bredden */ min-width: 320px; /* Minimum for mobil læsbarhed */ max-width: 1200px; /* Maksimum for desktop læsbarhed */ margin: 0 auto; }

Multi-kolonne layouts med begrænsninger

Skab fleksible kolonne-systemer, der tilpasser sig elegant.

.column-layout { display: flex; gap: 20px; max-width: 1000px; margin: 0 auto; flex-wrap: wrap; /* Tillader kolonner at bryde til ny linje */ } .main-column { flex: 2; /* Optager dobbelt så meget plads som sidebar */ min-width: 300px; /* Sikrer læsbart hovedindhold */ } .sidebar { flex: 1; /* Optager én del plads */ min-width: 200px; /* Minimum sidebar bredde */ max-width: 300px; /* Forhindrer overdimensioneret sidebar */ }

Ydeevneovervejelser

Breddebegrænsninger har generelt minimal indvirkning på ydeevnen. Dog:

  • Reflow-optimering: Foretræk procentbaserede begrænsninger over faste pixels for flydende responsive designs, da de kan føre til færre layoutberegninger.
  • Animation: Animering af bredde kan udløse layout-omregninger. Overvej transform-baserede alternativer for jævnere animationer.
  • Container Queries: Fremtidige CSS-funktioner som Container Queries vil tilbyde endnu mere effektiv responsiv adfærd baseret på en forældre-containers størrelse, ikke kun viewportet. Hold øje med dem!

Ofte Stillede Spørgsmål (FAQ)

Hvad er forskellen mellem width og max-width?

width forsøger at sætte en elements bredde præcist til den angivne værdi. Hvis indholdet eller den omgivende plads ikke tillader det, kan det forårsage overflow eller elementet kan blive presset. max-width sætter derimod en øvre grænse for bredden. Elementet vil kun strække sig op til denne grænse, men vil krympe, hvis der er mindre plads til rådighed, hvilket gør det mere fleksibelt for responsivt design. Generelt er det en god praksis at bruge max-width: 100%; på billeder og andre blok-elementer for at sikre, at de aldrig bryder dit layout.

Kan jeg bruge min-width og max-width sammen med faste pixelværdier?

Ja, absolut! Det er faktisk en meget almindelig og anbefalet praksis. For eksempel kan du have et element med width: 100%;, men også sætte max-width: 1200px; for at forhindre, at det bliver for bredt på meget store skærme, og min-width: 320px; for at sikre, at det ikke bliver ulæseligt på små mobilskærme. Dette skaber en robust, fleksibel container.

Hvorfor er min-width vigtigere end width i responsivt design?

I responsivt design handler det ofte om at lade elementer "flyde" og tilpasse sig. Hvis du kun bruger width, kan elementer blive for små og ulæselige på små skærme, eller de kan forårsage horisontal scrolling. min-width sikrer, at elementer aldrig krymper under en brugbar størrelse, selv når pladsen er begrænset. Dette er især vigtigt for tekstblokke, knapper og navigationsmenuer.

Hvornår skal jeg bruge em eller rem i stedet for px for breddebegrænsninger?

em og rem er gode, når du ønsker, at elementernes størrelse skal skalere i forhold til tekststørrelsen. Hvis din bruger ændrer standard skriftstørrelsen i browseren, vil elementer defineret med em eller rem automatisk justere sig, hvilket forbedrer tilgængeligheden. rem er ofte foretrukket for global skalering, da den er baseret på rod-elementets skriftstørrelse, hvilket giver mere forudsigelig adfærd end em, som er relativ til det aktuelle elements skriftstørrelse.

Hvilken præcedens har min-width, max-width og width?

Prioritetsrækkefølgen er som følger (højeste til laveste):

  1. min-width: Har altid den højeste præcedens og vil altid blive respekteret.
  2. max-width: Respekteres, medmindre den konflikter med min-width.
  3. width: Den "ønskede" bredde, som vil blive anvendt, hvis den ikke konflikter med min-width eller max-width.

Dette betyder, at hvis min-width er sat til 500px og max-width til 300px, vil elementet ende med at være 500px bredt, da min-width vinder.

Konklusion

CSS @media-reglen og breddebegrænsningsegenskaberne (max-width og min-width) er fundamentale værktøjer til at skabe fleksible, responsive web-layouts. De giver afgørende kontrol over elementernes størrelse, samtidig med at de opretholder den tilpasningsevne, der er nødvendig for moderne webdesign. Ved at forstå deres adfærd, værdityper og bedste praksis kan du skabe layouts, der fungerer smukt på tværs af alle enheder og skærmstørrelser.

Nøglepunkter at huske:

  • Brug @media til at anvende forskellige stilarter baseret på enhedens egenskaber.
  • Brug max-width til at forhindre elementer i at blive for brede på store skærme.
  • Brug min-width til at sikre, at elementer forbliver brugbare og læselige på mindre skærme.
  • Kombiner begge egenskaber for at skabe fleksible containere, der tilpasser sig inden for definerede grænser.
  • Overvej altid box-modellen og brug box-sizing: border-box; for mere forudsigelige breddeberegninger.
  • Test dine implementeringer på forskellige skærmstørrelser og enheder.

Disse CSS-egenskaber, når de bruges effektivt, udgør grundlaget for responsivt webdesign og hjælper med at skabe brugeroplevelser, der fungerer problemfrit på tværs af det stadigt voksende landskab af enheder og skærmstørrelser.

Hvis du vil læse andre artikler, der ligner Responsivt Design: @media Reglen og Breddebegrænsninger i CSS, kan du besøge kategorien Teknologi.

Go up