CSS: vloeibare en elastische layout

Leerdoelen

Vloeibare en elastische layout (liquid/fluid & elastic)

Waar het om draait bij een vloeibare en elastische layout is dat een webpagina overzichtelijk en goed leesbaar is, ongeacht de grootte van het browservenster of de ingestelde tekstgrootte.Hierbij zijn een aantal factoren van belang:

  1. schermresolutie: Hoe groot is mijn scherm? En hoe gedraagt mijn webpage zich op dat scherm? Hoe verhouden de kolommen zich op de beschikbare ruimte tot elkaar?
  2. content: Bij het niet opgeven van een vaste grootte wordt de grootte van een kolom bepaald door de inhoud, dus tekst of images.
  3. usability (gebruikersgemak): Wat wil ik altijd onaangetast laten zien? Heb ik scrollbalken nodig? Hoe voorkom ik overmatig gebruik van scrollbalken? Met name horizontale scrollbalken probeer je altijd te vermijden.
  4. leesbaarheid: Hoe zien mijn teksten er uit als de webpage fullscreen wordt getoond op een scherm met een zeer hoge resolutie? Wil je dat wel?

Liquid/Fluid

Bij een vloeibare layout beweegt de opmaak van een pagina mee met de grootte van het browservenster. Het belangrijkste voordeel is dat zo'n pagina in iedere resolutie of browsergrootte het browservenster altijd volledig vult.

Je maakt dus optimaal gebruik van de beschikbare ruimte en je bladspiegel blijft gelijk bij het schalen van een pagina. In hogere resoluties worden de tekstkolommen vaak erg breed en dat is nadelig voor de leesbaarheid. Dit kun je enigszins opvangen door gebruik te maken van de min-width en max-width property. Deze property wordt in IE6 nog niet en in IE7 redelijkondersteund.

Fluid (vloeibaar) wil zeggen: fixed (vast) maar dan met relatieve units.

voorbeeld fixed:

#wrapper { width: 800px } 

voorbeeld fluid:

#wrapper { width: 100% } 

Elastic

Een elastic layout bestaat uit kolommen waarbij we de EM als measuring unit gebruiken. Hierdoor wordt de layout uitgebreid (expand) of samengetrokken (contract) al naar gelang de fontsize. Dus de fontsize is hier een bepalende factor.

Door gebruik te maken van de measuring unit em wordt een blok tekst breder als de text-size groter wordt. Je tekst blijft goed leesbaar, maar de pagina layout verrandert en je maakt niet altijd optimaal gebruik van de beschikbare ruimte.

voorbeeld elastic:

#contentHeading, #content {
   width: 34em;
   }
#contentHeading h2 {
   background: none;
   padding: 1em;
   text-align: center;
   }
#footer {
   width: 43.5em;
   }

Voor een demo zie Elastic Design Demonstration op www.htmldog.com

Uiteraard kun je elementen met vloeibare layout combineren met elementen met elastische of fixed-widht layout. Je moet dus goed bedenken van welke elementen het belangrijk is dat ze schalen en welke van plaats mogen veranderen.

Cascading

Waar het om draait bij cascading (C in CSS betekent Cascading) is de belangrijkheid en de volgorde van selectors via rules & specificity. Zo heeft het standaard CSS van de browser een bepaalde belangrijkheid ten opzichte van de belangrijkheid van het CSS van de webdesigner. De specificering van een rule is afhankelijk van het type selector, maar ook van het aantal selectors. De specificering kan worden berekend door levels aan te brengen, te weten a,b,c,en d.

a: gaat het om een inline style dan wordt a=1. Weegt dus vrij zwaar mee!

b: het totaal aantal ID selectors

c: het aantal class, pseudo-class en attribute selectors

d: het aantal type selectors (p, div, etc) en pseudo-element selectors (div p ul li)

Hiermee is het mogelijk om de specificity van elke CSS selector te berekenen.

selector specificity specificity in base 10
  a,b,c,d  
#wrapper #content {} 0,2,0,0 200
#content .datePosted {} 0,1,1,0 110
div#content 0,1,0,1 101
#content {} 0,1,0,0 100
p.comment .datePosted {} 0,0,2,1 21
p.comment {} 0,0,1,1 11
div p {} 0,0,0,2 2
p {} 0,0,0,1 1

Boeken

CSS Mastery: Advanced Web Standards Solutions, Andy Budd, Simon Collison, Cameron Moll Friends of ED, English, ISBN: 978-1590596142
Hoofdstuk 1, pag. 16-18: The Cascade and Specificity
Hoofdstuk 7: Layout, pag. 141-152: Fixed-width, liquid and elastic layout

Bulletproof Webdesign Dan Cederholm, English, ISBN-13: 978-0-321-50902-4
hoofdstuk 8: Fluid and Elastic Layouts

Links

discussies:
http://www.456bereastreet.com/archive/200504/about_fluid_and_fixed_width_layouts/
http://www.molly.com/2005/04/16/fixed-versus-liquid-the-beating-goes-on/

voorbeelden:
http://www.alistapart.com/articles/fauxcolumns/
http://www.htmldog.com/examples/

Lesoefening

oefening

Maak een page layout volgens bovenstaande afbeelding, rekening houdend met de volgende maten:

wrapper: hoogte = 45EM elastic, breedte = 85EM elastic
top: hoogte = fixed 150 pixels, breedte = elastic
content: hoogte = elastic, breedte = elastic
right: breedte = 150 pixels fixed, hoogte = elastic

Bij het verkleinen van het browserwindow (horizontaal) moet de rechterkolom 'right' zijn breedte van 150 pixels behouden; de layer 'content' moet meeschalen.

Klik hier voor de basis html voor de oefening