(Bilde: digi.no)

Prefiksede CSS-egenskaper

Vil droppe støtten for CSS-prefikser i WebKit

Nå innføres et bedre alternativ.

Mange webutviklere vil gjerne bruke ny og spennende funksjonalitet så tidlig som mulig, tilsynelatende uten tanke på de langsiktige konsekvensene. Det viser den betydelige bruken av leverandørspesifikke CSS-egenskaper (Cascading Style Sheets), altså egenskaper som i utgangspunktet kun støttes av én gitt nettleser, som anses som eksperimentelle, og som derfor er merket med et eget prefiks.

Det er spesielt i forbindelse med mobiltilpassede websider og -applikasjoner at CSS-egenskaper med leverandørprefiks har blitt brukt lenge, og da spesielt med prefikset til WebKit-baserte nettlesere, inkludert Apple Safari,

Andre nettlesere, som er langt mindre utbredt på mobile enheter enn på pc-er, har ofte blitt ignorert av disse utviklerne, noe som gjør at sidene ofte ikke vises korrekt i disse nettleserne, selv om også disse har støtte for de samme CSS-reglene.

WebKit

Selv om Apples Safari og WebKit-prosjektet, som Safari bygger på, er de som er minst berørt av disse problemene, så innser de at strategien med å bruke prefikser for å gi utviklere tidlig tilgang til å eksperimentere med ny funksjonalitet, har vært lite vellykket.

Det skriver Edward O'Connor, som jobber i WebKit-gruppen til Apple, i dette blogginnlegget.

I tillegg til å at andre nettlesere må inkludere støtte for prefikset for WebKit for å få CSS-en til å fungere, så kan heller ikke WebKit erstatte støtten for prefiksede egenskaper med ikke-prefiksede, fordi webutviklerne ofte ikke har brydd seg om å inkludere de samme egenskapene uten prefiks. I stedet må begge deler støttes av nettleserne, lenge etter at funksjonaliteten har blitt moden.

«Runtime flags»

Selv om de konseptet med prefiksede CSS-reglene har vist seg å fungere dårlig, så er det fortsatt viktig for nettleserleverandørene å gjøre ny og eksperimentell funksjonalitet tilgjengelig for webutviklere på et tidlig tidspunkt, slik at utviklerne kan eksperimentere med den og å komme med tilbakemeldinger om hva som fungerer og ikke – på websider som kun er opprettet for å utføre slik testing.

Derfor skal WebKit-prosjektet ikke lenger tilby støtte for nye og eksperimentelle egenskaper bak leverandørspesifikke prefikser, bortsett fra ved helt spesielle tilfeller.

I stedet vil støtten for slik helt ny, ikke-prefikset funksjonalitet i stor grad kunne aktiveres og deaktiveres i WebKit ved hjelp av «runtime flags», altså spesielle innstillinger i nettleseren.

I begynnelsen, mens støtten for den aktuelle funksjonaliteten er helt fersk og potensielt kan bli betydelig endret, vil støtten være deaktivert som standard. Webutviklere vil kunne skru den på for å eksperimentere med den, men den støtten vil være deaktivert hos de fleste andre brukere med den samme utgaven av nettleseren.

Senere, etter at funksjonaliteten har blitt moden nok for bruk på den offentlige weben, vil støtten for den bli skrudd på som standard i nye versjoner av WebKit og WebKit-baserte nettlesere. Men det vil fortsatt være mulig å skru den av ved behov.

Først når de fleste av de WebKit-baserte nettleserne faktisk leverer støtte for den aktuelle funksjonen eller egenskapen, vil muligheten til å skru av støtten bli fjernet. Dette gjelder dog bare selve WebKit-prosjektet.

Hva som faktisk vil gjelde for nettlesere som er basert på WebKit, vil være opp til det enkelte prosjekt å bestemme.

Betydningen for webutviklere

Fra starten av vil ikke webutviklere merke noen forskjell, O'Connor skriver at WebKit-prosjektet på lengre sikt håper at endringen vil gjøre det enklere for utviklere å teste kommende funksjonalitet.

Foreløpig vil WebKit ha støtte for dagens prefiksede CSS-egenskaper, men det er ikke gitt at dette vil være evig.

– Vi vil evaluere eksisterende funksjonalitet hver for seg. Over tid regner vi med betydelig å redusere antallet prefiksede egenskaper som støttes, men webkompatibilitet kommer til å kreve at vi beholder prefiksede utgaver av noe funksjonalitet, skriver O'Connor.

I praksis betyr dette at bruken av prefiksede CSS-egenskaper ikke har noen framtid. Webutviklere som ikke for lengst har sluttet å bruke dem, bør definitivt slutte nå. I tillegg bør prefiksede CSS-egenskaper i eksisterende løsninger erstattes med ikke-prefiksede egenskaper så langt det er mulig.

At det sistnevnte vil skje innen rimelig tid, er nok lite sannsynlig. Det vil kreve for mye arbeid. Men man kan kanskje håpe at man slipper å se nye eller oppdaterte webløsninger som er fulle av CSS-egenskaper med leverandørspesifikke prefikser.

Mer om den nye policyen til WebKit finnes her. Apple kom med en ny testversjon av Safari i går, men det er ikke oppgitt om den nye policyen er tatt i bruk allerede i denne utgaven.

Til toppen