Tilbage til Browser-kompatibilitet og Progressive Enhancement

3. semester / Tema 13C: Frontend Design

@supports og feature detection

Brug `@supports` til at spørge browseren om kapabiliteter i stedet for at gætte på browsernavne.

Se undervisningsslides

Relevante links

Spørg efter støtte, ikke efter browser

@supports er et af de vigtigste værktøjer i moderne CSS-kompatibilitet. I stedet for at tænke “virker det i browser X?” kan du spørge direkte: “understøtter browseren denne property, værdi eller selector?”

Det gør koden mere fremtidssikker, fordi du tester kapabilitet og ikke brandnavn.

Der er flere ting du kan teste

Her vises tre nyttige mønstre:

@supports (view-timeline: --my-timeline) {
...
}
@supports selector(::details-content) {
...
}
@supports not (interpolate-size: allow-keywords) {
[open]::details-content {
...
}
}

Du kan altså både teste property/value-par, selectors og negationer. Det gør @supports til et godt sted at samle både enhancements og fallback-regler.

text-box med fallback

I denne demo bruges @supports not (...) til at lægge en fallback ind, hvis browseren ikke kan trimme teksten med text-box:

Det er et godt mønster, fordi den moderne løsning får lov at stå først, mens fallbacken kun aktiveres, når den faktisk er nødvendig.

Dette er et eksempel på Graceful Degradation, hvor den bedste løsning kommer først, og så sørger man for, at det stadig ser nogenlunde ud, hvis den ikke understøttes. Det er et fint alternativ til Progressive Enhancement, når det handler om visuelle forbedringer, der ikke er afgørende for funktionaliteten.

Ressourcer