CSS er språket som bestemmer hvordan en nettside ser ut – farger, avstander, skygger og bevegelse. Da «CSS3» ble et moteord rundt 2010, måtte man ofte skrive den samme koden i fire-fem varianter for at den skulle virke i alle nettlesere. I dag er det meste av dette standardisert og støttet overalt, og du kan oppnå effekter som avrundede hjørner, skygger, fargeoverganger og myke hover-animasjoner med noen få linjer ren CSS. Denne guiden går gjennom de mest brukte effektene, viser oppdatert kode uten unødvendige triks, og forklarer hvilke nyere muligheter som gir designet ekstra piff i 2026.
Viktige punkter
- «CSS3» = moderne CSS. Navnet beskriver ikke lenger en egen versjon; CSS utvikles nå modul for modul.
- Prefikser er stort sett unødvendige. border-radius, box-shadow, text-shadow, transition, opacity og gradienter virker uten
-webkit-og-moz-. - Glem IE-triks. Internet Explorer ble pensjonert 15. juni 2022 –
filter: alpha(opacity=…)trengs ikke lenger. - Bruk rgba() for skygger og gjennomsiktighet slik at teksten forblir lesbar.
- Hold overganger korte – 0,15–0,4 sekunder føles elegant; flere sekunder føles ødelagt.
- Nyere verktøy som variabler,
clamp(),aspect-ratio,:has()og container queries gir mer fleksibel kode.
Hva betyr «CSS3» egentlig i dag?
«CSS3» er ikke lenger en egen versjon av CSS. Navnet stammer fra den tredje store generasjonen av stilsspråket, men etter CSS3 sluttet man å nummerere hele språket under étt. I stedet utvikles CSS nå i en rekke selvstendige moduler – for eksempel «CSS Backgrounds and Borders», «CSS Color» og «CSS Transitions» – som hver har sin egen versjon og fremdrift. Når folk sier «CSS3-koder», mener de i praksis moderne CSS: egenskapene som kom med denne generasjonen og som i dag er en helt vanlig del av verktøykassen.
Det betyr to ting for deg. For det første trenger du ikke tenke på «CSS3» som noe eksperimentelt lenger – effektene nedenfor er stabile og trygge å bruke. For det andre er mye av den eldre eksempelkoden du finner på nettet utdatert, fordi den inneholder leverandørprefikser og reserveløsninger som ikke lenger trengs. Vil du ha det grunnleggende på plass først, har vi en egen artikkel om hva CSS er og hvordan stilark kobles til en side.
Border-radius: avrundede hjørner
Med border-radius runder du av hjørnene på et element uten bilder eller JavaScript. Før CSS3 måtte man lage avrundede hjørner med bildebiter i Photoshop eller tunge skript – nå holder det med én linje:
border-radius: 12px;Verdien angir hvor kraftig avrundingen er: jo høyere tall, desto rundere hjørner. Du kan bruke egenskapen på nesten hva som helst – bilder, tekstfelter, knapper og vanlige div-bokser. Vil du lage en helt rund form, for eksempel en profilbilde-sirkel, setter du verdien til halvparten av bredden eller rett og slett 50 %:
border-radius: 50%;Du kan også styre hvert hjørne for seg hvis du bare vil runde av toppen eller bunnen. Da oppgir du fire verdier med klokken, fra øverste venstre: border-radius: 12px 12px 0 0; runder for eksempel bare de to øverste hjørnene.
Box-shadow: skygge rundt elementer
box-shadow legger en skygge på et element og gir dybde til knapper, kort og bokser. En vanlig, myk skygge ser slik ut:
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);Verdiene betyr, i rekkefølge: horisontal forskyvning, vertikal forskyvning, hvor mye skyggen skal mykes opp (blur), og til slutt fargen. De to første tallene bestemmer hvilken retning skyggen faller – her litt ned og til høyre. I stedet for ren svart farge lønner det seg å bruke en gjennomsiktig svart med rgba(), slik eksempelet over gjør. Da smelter skyggen naturlig sammen med bakgrunnen uansett farge, i stedet for å virke hard og grafisk.
Innvendig skygge med inset
Legger du til nøkkelordet inset, flyttes skyggen inn i elementet i stedet for ut. Det gir en «fordypet» effekt som egner seg godt for inntrykte knapper eller inndatafelter:
box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.25);Du kan også legge flere skygger på samme element ved å skille dem med komma – for eksempel en ytre og en indre skygge samtidig. Det gir mye kontroll, men vær forsiktig: for mange tunge skygger på en gang kan gjøre siden trég på svakere mobiler.
Text-shadow: skygge på tekst
text-shadow fungerer som box-shadow, men på selve teksten. Du styrer forskyvning, mykhet og farge på samme måte:
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);Effekten er mest nyttig når du vil løfte lys tekst fra en mørk bakgrunn, eller omvendt. En diskret skygge kan også gjøre tekst lettere å lese oppå et bilde. Vær likevel sparsom: kraftige tekstskygger blir fort rotete og reduserer lesbarheten i stedet for å forbedre den. For vanlig brødtekst bør du som regel la være helt.
Linear-gradient: fargeoverganger
Med linear-gradient lager du en jevn overgang mellom to eller flere farger, for eksempel som bakgrunn på en knapp eller en seksjon. Moderne, standardisert syntaks ser slik ut:
background-image: linear-gradient(to top, #b77be4 15%, #dca0ff 58%, #ffc0ff 79%);Nøkkelordet to top forteller hvilken retning overgangen skal gå – her nedenfra og opp. Du kan også oppgi en vinkel, for eksempel 135deg, eller hjørner som to bottom right. Prosentene bak hver farge bestemmer hvor overgangen skifter. Merk at eldre eksempler ofte skriver bare linear-gradient(bottom, …) uten to, samt egne -webkit-, -moz-, -o- og -ms--varianter. Den gamle syntaksen er utédatert og kan gi valideringsfeil – én moderne linje er alt du trenger.
Fargeoverganger krever litt prøving og feiling for å treffe riktig, så en visuell generator kan spare deg for tid. Denne generatoren ble tidligere ofte anbefalt til formålet. Du kan også bruke de innebygde utviklerverktøyene i nettleseren til å justere fargene live mens du ser resultatet.
Transition: myke hover-effekter
transition gjør at endringer skjer gradvis i stedet for brått. Det mest vanlige er å la en knapp bytte farge mykt når musepekeren er over den:
.knapp {
background-color: #ed8029;
color: #fff;
padding: 10px 16px;
border-radius: 6px;
transition: background-color 0.3s ease;
}
.knapp:hover {
background-color: #a7b526;
}Verdien 0.3s er hvor lenge overgangen varer. Her ligger en vanlig feil på lur: eldre eksempler bruker gjerne 5s, som føles uendelig tregt for brukeren. For hover-effekter bør du som regel holde deg mellom 0,15 og 0,4 sekunder. Du kan animere flere egenskaper samtidig ved å skille dem med komma, eller bruke transition: all 0.3s ease; for å fange alt – men det er ryddigere og raskere å navngi akkurat de egenskapene du faktisk endrer.
Opacity: gjennomsiktighet
Med opacity bestemmer du hvor gjennomsiktig et element er, fra 0 (helt usynlig) til 1 (helt synlig). Du kan bruke desimaler fritt, for eksempel 0.85:
opacity: 0.8;Det du må huske, er at opacity gjør hele elementet gjennomsiktig – inkludert all tekst og alle barn inni det. Vil du bare gjøre bakgrunnen halvt gjennomsiktig mens teksten forblir helt synlig, bruker du en farge med alfakanal i stedet:
background-color: rgba(0, 0, 0, 0.5);Dette er en viktig modernisering. Eldre guider forklarer gjerne at «Internet Explorer ikke støtter gjennomsiktighet» og viser en filter: alpha(opacity=50)-løsning. Det er ikke lenger relevant: Microsoft pensjonerte Internet Explorer 15. juni 2022, og alle nettlesere som brukes i dag støtter opacity og rgba() fullt ut. Du kan trygt slette slike IE-triks fra gammel kode.
Moderne CSS-triks som gir ekstra edge
Effektene over er klassikere, men CSS har fått mange nye muligheter de siste årene. Her er noen som gir designet ditt både mer liv og mindre kode – alle støttet i moderne nettlesere.
Egendefinerte variabler (custom properties)
Variabler lar deg definere en verdi én gang og gjenbruke den overalt. Vil du bytte hovedfarge, endrer du bare én linje:
:root {
--hovedfarge: #ed8029;
}
.knapp {
background-color: var(--hovedfarge);
}clamp() for responsiv størrelse
clamp() lar deg sette en verdi som skalerer med skjermen, men aldri blir for liten eller for stor. Perfekt for skrift som skal passe både på mobil og stor skjerm:
font-size: clamp(1rem, 2.5vw, 2rem);aspect-ratio for faste proporsjoner
Med aspect-ratio holder du et element i et fast forhold, for eksempel 16:9 for video eller bildekort, uten regnestykker:
aspect-ratio: 16 / 9;Fleksibel layout med flexbox og gap
For å plassere elementer ved siden av hverandre med jevn avstand bruker du display: flex og gap – mye enklere enn gamle float-triks:
display: flex;
gap: 1rem;:has() og container queries
To av de største nyvinningene er :has(), som lar deg style et element ut fra hva det inneholder, og container queries, som lar en komponent tilpasse seg bredden på sin egen beholder i stedet for hele skjermen. Begge ble «Baseline» (støttet i alle store nettlesere) i løpet av 2023. Vil du forstå helheten bak dette, les mer om responsivt design og hvordan sider tilpasser seg ulike skjermer.
Sammenligning
| Egenskap | Hva den gjør | Eksempelverdi | Nettleserstøtte |
|---|---|---|---|
| border-radius | Avrundede hjørner | 12px / 50% | Alle moderne nettlesere |
| box-shadow | Skygge rundt (eller inni) et element | 2px 2px 8px rgba(0,0,0,.2) | Alle moderne nettlesere |
| text-shadow | Skygge på tekst | 0 1px 2px rgba(0,0,0,.4) | Alle moderne nettlesere |
| linear-gradient | Jevn overgang mellom farger | linear-gradient(to top, #b77be4, #ffc0ff) | Alle moderne nettlesere |
| transition | Myk animasjon mellom to tilstander | background-color 0.3s ease | Alle moderne nettlesere |
| opacity | Gjennomsiktighet på hele elementet | 0.8 | Alle moderne nettlesere |
| Custom properties | Gjenbrukbare variabler | --hovedfarge: #ed8029 | Alle moderne nettlesere |
| aspect-ratio | Fast størrelsesforhold | 16 / 9 | Baseline 2021 |
| :has() | Style ut fra innhold | .kort:has(img) | Baseline 2023 |
| Container queries | Tilpasning etter beholderens bredde | @container (min-width: 400px) | Baseline 2023 |
Trenger du fortsatt vendor-prefikser?
I de aller fleste tilfeller nei. Leverandørprefikser som -webkit-, -moz-, -o- og -ms- var en måte å teste nye egenskaper på mens de fortsatt var under utvikling. Egenskapene i denne guiden – border-radius, box-shadow, text-shadow, transition, opacity og linear-gradient – har vært støttet uten prefiks i alle moderne nettlesere i mange år. Å fylle koden med prefikser i dag gjør den bare lengre og vanskeligere å vedlikeholde.
Det finnes unntak for helt ferske funksjoner, og da er verktøy som Autoprefixer nyttige fordi de legger til nøyaktig de prefiksene som trengs, automatisk. Vil du sjekke statusen for en konkret egenskap, er nettstedet caniuse.com det raskeste oppslagsverket. Hvilke nettlesere folk faktisk bruker, kan du lese mer om i vår sammenligning av hvilken nettleser som er best.
Vanlige feil med CSS-effekter
Det er lett å overdrive når effektene er så enkle å ta i bruk. Her er de feilene som går igjen oftest:
- Unødvendige prefikser og IE-triks. Kopiert gammel kode med fire gradient-varianter og
filter: alpha()blåser opp stilarket uten å gi noe tilbake. - For trege overganger. En
transitionpå flere sekunder føles ikke elegant, men ødelagt. Hold hover-effekter korte. - For harde, svarte skygger. Ren
#000uten gjennomsiktighet gir et flatt, grafisk preg. Brukrgba()med lav alfaverdi. - Opacity på hele elementet. Når teksten blir utydelig fordi du gjorde boksen gjennomsiktig, er løsningen
rgba()på bakgrunnen i stedet. - For mange effekter samtidig. Skygger, gradienter og animasjoner overalt stjeler oppmerksomhet og kan tynge ytelsen. Bruk effektene der de fremhever noe viktig.
- Glemmer kontrast og lesbarhet. Et design kan se «kult» ut og likevel være vanskelig å lese. Innhold og tilgjengelighet går foran pynt.
Hvor passer disse effektene best?
Bruk effektene målrettet for å støtte innholdet, ikke for å fylle siden med pynt. Avrundede hjørner og myke skygger gir knapper og kort et moderne, lett preg. Fargeoverganger fungerer fint som bakgrunn på seksjoner og framhevede knapper. Overganger gjør grensesnittet behagelig ved å myke opp endringer. Gjennomsiktighet er nyttig for overlegg over bilder. De nyere verktøyene – variabler, clamp(), aspect-ratio og container queries – handler mer om å skrive ryddig og fleksibel kode enn om rene visuelle effekter, men de gjør arbeidet både raskere og mer holdbart.
Vil du gå videre, har vi flere praktiske guider: hvordan du sentrerer skrift og innhold med HTML og CSS, og hvordan du piffer opp teksten med Google Fonts. Er du ny til markup, kan det også være nyttig å lese om hva HTML5 er, siden CSS alltid jobber sammen med HTML-strukturen på siden.
Kilder
Vanlige spørsmål (FAQ)
Hva er forskjellen på CSS og CSS3?
Det er ingen praktisk forskjell i dag. CSS3 var den tredje store generasjonen av CSS og førte med seg funksjoner som avrundede hjørner, skygger og animasjoner. Etter CSS3 sluttet man å nummerere språket, og CSS utvikles nå modul for modul. Når folk sier CSS3 i dag, mener de rett og slett moderne CSS.
Trenger jeg fortsatt leverandørprefikser som -webkit- og -moz-?
For egenskapene i denne guiden trenger du dem ikke – de er støttet uten prefiks i alle moderne nettlesere. Prefikser er bare aktuelt for helt ferske, eksperimentelle funksjoner, og da bør du bruke et verktøy som Autoprefixer og sjekke status på caniuse.com.
Hvordan lager jeg en helt rund form med border-radius?
Sett border-radius: 50%; på et element som er like bredt som det er høyt. Da blir det en perfekt sirkel. Dette brukes ofte for profilbilder og runde ikonknapper.
Hvorfor blir teksten utydelig når jeg bruker opacity?
opacity gjør hele elementet gjennomsiktig, inkludert teksten inni. Vil du bare ha en halvt gjennomsiktig bakgrunn, bruk en farge med alfakanal i stedet, for eksempel background-color: rgba(0, 0, 0, 0.5);. Da forblir teksten helt synlig.
Går nettsiden tregere av mange CSS-effekter?
Enkle effekter som avrundede hjørner og én skygge påvirker ytelsen minimalt. Problemer oppstår først når du stabler mange tunge skygger, store blur-verdier og animasjoner oppå hverandre, spesielt på svakere mobiler. Bruk effektene der de trengs, så merker brukeren ingenting.