Struktur
Boksmodell
Som kommentert i modulen er det slik at parseren i nettleseren etter beste evne, og med betydelig toleranse, lager en XML-struktur av websiden. En slik struktur manifesterer seg i det som vanligvis kalles boksmodellen. Det vil si at vi har en hierarkisk modell der elementer omslutter hverandre. Hvert element har en forelder og vilkårlig mange barn. Hele tankegangen både i CSS og Javascript er basert på dette. I CSS vet vi at elementer arver egenskaper fra den omgivende boksen og vi bruker strukturen når vi skriver selektorer. I Javascript kan vi bruker de "vanlige" trestruktur metodene for å traversere element-treet. Vi kan se på foreldre, barn og søsken.
Du kan få et godt innblikk i denne strukturen når du bruker de utviklings/analyse verktøyene som ligger i moderne nettlesere. Nedenfor kan du gjøre et eksperiment for¨å se hvordan boksene er plassert på denne siden. Klikk på knappen "toggleview" for å se boksstrukturen. Det er lagt inne en liten forsinkelse for å illustrere rekkefølgen i en top-down traversering av strukturen.
Javascript- koden som gjør jobber er slik:
Posisjonering
Hvis vi ikke bestemmer noe annet plasseres elementene slik vi plasserer dem i kildekoden. De to p-elementene under inneholdes i div-elementet.
... <div> <p> </p> <p> </p> </div> ...
Så finnes det en rekke CSS-mekanismer for å bestemme hvordan de skal plasseres, typisk margin, display, flex. Vi lager CSS-klasser som kombinerer slike egenskaper.Vi går ikke inn på disse detaljene her, de er nærmere omtalt i materialet CSS.
Vi kan imidlertid til en viss grad bryte ut av mønsteret ved å bruke posisjonering absolut, relative og fixed.
Dette endrer ikke på elementenes plassering i sidestrukturen, boksmodellen. Dette kan du forsikre deg om ved å bruke utviklingsverktøyet i nettleseren. De 5 posisjoneringstypene har imidlertid konsekvenser på hva som arves og hvordan elementene belegger plass på siden. HTML-fragmentet og tilhørende stilsett finner du nedenfor.
Det er en god del finurligheter involvert i dette, og det er slike ting som kan ta tid å få på plass.