De CSS van deze site uitgelegd

Internet Explorer Styles

Katinka Hesselink januari 2006

De styles in dit gedeelte zouden overbodig moeten zijn: ze zijn nodig omdat Internet Explorer CSS niet volledig ondersteunt. Om andere browsers er niet mee lastig te vallen, zet je deze styles in 'conditional comments' als volgt:

<!--[if IE]> 
<link href="style_ie.css" rel="stylesheet"
type="text/css" media="screen">
<![endif]-->

Niet heel ingewikkeld. <!--[if IE]> betekent: als je (als browser) Internet Explorer bent, dan is er voor jou het volgende stylesheet. Je sluit soortgelijk af: <![endif]--> . Deze methode is ontwikkeld em aangeraden door mensen van Microsoft zelf en zal dus blijven werken. 

Ik merk dat het heel handig is om de styles van IE zo los te hebben staan. Ik heb ook wel gewerkt met browser-hacks, maar die zijn lelijk en in de praktijk onoverzichtelijk. Bovendien maken ze gebruik van fouten in de interpretatie van CSS en dat betekent dat er zaken mis gaan als IE CSS opeens beter (maar nog niet perfect) gaat interpreteren. De rest van de declaratie gaat net als bij het algemene stylesheet. Hier volgt de code uit dit stylesheet (op moment van schrijven)

#menu a {width: 99.9%;}

#main { /*zorgt voor max-width: 30em*/
width:expression(
document.body.clientWidth > (500/12) *
parseInt(document.body.currentStyle.fontSize)?
"30em":
"auto" );

left: 15em;}

Het begint met een codering voor #menu a , die ik al heb uitgelegd. Heel kort: dit zorgt ervoor dat het hele button van het menu in IE klikbaar is.

Vervolgens een verhaal voor #main . Ook hiervan heb ik het grootste gedeelte al uitgelegd. De expressie voor width zorgt ervoor dat de breedte van div id="main" niet groter wordt dan 30em, omdat dat leesbaarder is. 

De declaratie voor #main eindigt met left: 15em; Nadat ik die expressie voor de breedte had ingesteld, vond IE om de een of andere raadselachtige reden dan het tekst-gedeelte onder het menu hoorde (althans een klein stukje). Het tekst-gedeelte was dus iets naar links geschoven. In het algemene stylesheet staat voor #main dat left: 14em moet zijn. Om dit effect in IE ook te houden heb ik dat vervangen door left: 15em . Dit soort trucjes zijn jammer genoeg heel gebruikelijk als je CSS gebruikt. Als ik niet al een apart stylesheet voor IE had gehad, zou ik in dit geval in het algemene stylesheet left: 15em gezet hebben.