Responsiv design
Børre Stenseth

Beregnet stil

Hva

Ofte blir stildefinisjonene ganske uoversiktlige. Vi har flere filer og vi har alternative definisjoner for ulike dimesjoner og vi har en "kaskade" av detaljeringsgrad i definisjonene. I tillegg har vi kanskje brukt style-attributten i enkelte elementer. Summen av dette er at vi mister oversikten over hva som er effektiv stilangivelse i enkelte situasjoner. Hjelpen her, foruten å holde orden under arbeidet, er å se på utviklingsverktøyet i browseren og se på "Computed style" når vi inspiserer et element. Du kan jo høyreklikke på en av menylinjene på denne siden og inspisere elementet.

Vi kan også finne denne beregnede, aktive, stilangivelsen fra Javascript ved funksjonen getComputedStyle. Vi skal se på bruk nedenfor.

dump styles

Vi kan jo først lese og dumpe et beregnet stilsett for et a-element som vanligvis brukes til å vise demo-sider:

Klikk her

Koden er slik:

_read.js
var dumpId;
function hideStyle(){
    document.getElementById(dumpId).innerHTML="";
}
function styleShow(elt,Id){
    dumpId=Id;
    var style=getComputedStyle(elt);
    var S='<button onclick="hideStyle()">'+
          'take it away</button>\n';
    for(var ix=0;ix<style.length;ix++){
        S+=style[ix]+" : "+
        style.getPropertyValue(style[ix])+
        "\n";
    }
    document.getElementById(dumpId).innerHTML=S;    
}

Hvis vi har tilgang til stilsettene og beregnet , eller aktiv, stil for et element har vi flere valgmuligeter for å foreta dynamiske justeringer:

  1. Vi kan programmere om stildefinisjonen.
  2. Vi kan bytte stilsett.
  3. Vi kan endre klasselista for et element, classList
  4. Vi kan endre style attributen for elementet

De tre første alternativene er beskrevt i materialet om, CSS. Her skal vi se litt på den siste varianten.

Justering

Her leser vi størrelsen på en container og justerer skriftstørrelsen i innholdet dynamisk, istedet for å spesifisere varianter i stilsettet.

Resize vinduet!

Hallo alle som ser dette
Dette kan gjøres på mange måter
Dette er bare ett eksempel på style manipulasjon

Containerdimensjon:

Stilsettet er veldig enkelt. Normalt ville dette ineholde en rekke spesifikasjoner for ulike dimensjoner av skjermen. I tillegg til det du ser her er det en definisjon for body-elementet som spesifiserer basis font med font-size:14px.

_calc1.css

Programkoden

_calc1.js

Det er en god del svakheter med denne løsningen. For det første "blafrer" det når vi resizer. Det er imidlertid ikke noe problem dersom vi er på brett eller telefon. Det som er verre er at vi raskt roter til ansvarsdelingen mellom CSS og Java og derved svekker oversiktligheten og vedlikeholdbarheten.

Fordelen er at vi kan ha noen nøkkelelementer som vi kan bruke som utgangspunkt for å tilpasse omgivelsene på en dynamisk måte uten å måtte detaljspesifisere og vedlikeholde mange detaljer i stilsettet.