En kärleksförklaring till en enhet
Alla som har byggt webbplatser har hamnat i en fundering och förhoppningsvis en diskussion om vilken enhet man ska använda som mått i sin CSS eller HTML. Det kan till synes vara en trivial fråga, men den är på intet sätt enkel. Inte förrän nu vill säga. För nu finns det en enhet som heter REM, eller Relative to Root Element.
Tidigare så har man haft möjlighet att välja mellan fyra varianter av enheter: Det klassiska pixelmåttet (px) - som baserat på att vi konsumerar webb på skärmar med pixlar känns naturlig; Punkter (pt) som med fördel används till utskriftsvarianter av webbplatser; Procentsatser (%) som ger en relativ storlek till det senaste bestämda måttet i objektmodellen; Och Relative to Element (em) som likt procentsatsen ger en relation till det senast satta.
När man bygger webbplatser med ramverk finns det en enorm fördel att bygga med relativa mått. Det finns däremot ett problem med att det gärna blir ganska komplext, procentsatser ger ingen egentlig uppfattning av hur stort ett element egentligen är (80% av 17px är vad?), och Relative to Element blir gärna abstrakt (0.8em av 1.7em är vad?).
Så, nu finns REM. Det är precis som det heter relativt till root-elementet i XML-strukturen som används. Det vill säga <html>. Kontentan är att vi kan sätta en font-size för just <html> som vi kan utgå från, för alla värden på webbplatsen. Konsekvensen blir att vi alltid kan räkna med enkla siffror. Om vi sätter att 1REM är 10px så är exempelvis 1.4rem alltid 14px. Därtill har vi möjligheten att skala webbplatsen genom att förändra en rad. Om vi ändrar fontstorleken på html från låt säga 10px till 12px så skalar allt upp, hela webbplatsen - inklusive all grafik som är definierade med REM. Att bygga adaptiva och/eller responsiva lösningar har aldrig varit så enkelt. Den senaste webbplatsen vi använde det i är Carnegie Fonder, som skalar mellan exempelvis desktop och stor desktop med just en förändring mellan 10px och 12px font-storleken i <html>.
Värt att nämna är att procentsatser för att definiera 1rem (ex: 62.5% som motsvarar 10px) inte fungerar i Internet Explorer 9. Å andra sidan har vi sen IE6s död inget behov av att sätta procentuella storlekar (IE6 kan inte skala fasta storlekar). Och, självfallet, hänger inte tidigare versioner än 9 av Internet Explorer med alls. Lösningen på det är att man får definera en fallback: "width:100px; width:10rem;".
Summa kardemumma är att vi har en enkel och hanterbar enhet. För alla storlekar som behöver sättas på en webbplats.
Framtiden är här.