HTML
Børre Stenseth

Struktur

Hva

I denne modulen skal vi se litt på arkitekturen på en webside. Boksmodellen og plassering av elementer. I modulen Et eksperiment skal vi se litt på posisjoneberegning.

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:

_boxes.js

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.

Jeg har 5 barn med litt forskjellig plassering
Jeg har negativ margin
Jeg er relativ
Jeg er absolute
Jeg er fixed (sorry)
Jeg bare er her

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.

_HTML-fragment

_Styles

Det er en god del finurligheter involvert i dette, og det er slike ting som kan ta tid å få på plass.

[1]
Referanser
  1. HTML5 w3.org dev.w3.org/html5/spec/Overview.html 14-03-2011