Blog

Graceful Degradation voor IE6

Geschreven door: Dirk Bonhomme 2 reacties

Iedere browser doet zijn best om HTML- en CSS code zoveel mogelijk volgens de W3C standaarden weer te geven, maar geen enkele browser doet dit perfect. Er is echter één browser die het leven van een webdeveloper steeds opnieuw zuur maakt: Microsoft Internet Explorer 6.

Als we de statistieken van onze sites erbij nemen zien we dat de volgende browsers het meest gebruikt worden: IE6, IE7, Firefox 3, Firefox 2, Safari 3 en Opera 9. Met een leeftijd van meer dan 6 jaar is IE6 veruit de oudste browser uit deze lijst.

In 2002 was er nog nauwelijks sprake van Myspace, Youtube, Gmail, Web2.0 en AJAX en lag de nadruk nog niet zo zwaar op beveiliging en webstandaarden.

Door onwetendheid van de gebruikers wordt hun computer vaak niet geüpdatet en zitten wij webdevelopers dus vast aan de vele beperkingen en fouten van deze zwaar verouderde browser.

Voorheen zochten we naar de grootste gemene deler in de browsers die we ondersteunen: Welke mogelijkheden zijn er zodat we exact dezelfde layout en functionaliteit bekomen in al deze browsers?. Laten we echter IE6 weg uit deze berekening, dan zien we dat er opeens veel meer mogelijkheden beschikbaar zijn op vlak van CSS en nette HTML code.

Tot het marktaandeel van IE6 te verwaarlozen is, zullen we deze browser toch op de meeste vlakken moeten ondersteunen. Om toch zoveel mogelijk potentieel uit de moderne browsers te halen zonder Internet Explorer gebruikers in de kou te laten staan gaan we in de toekomst steeds vaker “graceful degradation” toepassen. In de volgende items ga ik de grootste beperkingen van Internet Explorer 6 omschrijven en de oplossingen die we hiervoor kunnen gebruiken.

PNG transparency

Een van de grootste nadelen van IE6 is het ontbreken van PNG-24 transparantie. Hierdoor wordt het moeilijk om overgangen of schaduwen te gebruiken in ontwerpen.

Gelukkig is er een klein scriptje van Twinhelix dat de meeste van deze problemen oplost.

Pseudo-classes

Een handigheid die al eeuwen beschikbaar is voor CSS is het selecteren van specifieke elementen zoals het eerste of laatste item in een lijst. De code

 ul.menu li:first-child { font-weight: bold; }

zal enkel het eerste item uit een menu vetgedrukt maken. Aangezien deze pseudo-classes niet allemaal ondersteund worden door IE6 zijn we genoodzaakt om een extra class toe te voegen aan onze items:

 ul.menu li.first { font-weight: bold; }

Omdat het hier meestal gaat om details in de opmaak kunnen we overwegen om deze overbodige html code weg te laten en de gebruikers van IE6 een iets minder fraaie, maar even functionele pagina voor te schotelen.

Attribute selectors

Bijna net zo handig als de pseudo-classes zijn de attribute selectors. Hiermee kan je heel specifieke elementen stijlen op basis van hun attributen. Met deze code:

 input[type="password"] { border-color: red; }

kan je makkelijk onderscheid maken tussen invoervelden en met deze code:

 a[title] { font-weight: bold; }

maak je alle links met een title-attribuut vetgedrukt

Ook attribute selectors zullen meestal gebruikt worden om extra detail aan je pagina toe te voegen en zijn dus een goede kandidaat om te negeren tijdens het testen voor IE6.

Hover

In het geval van ":hover" is het simpel: Dit wordt enkel voor anchors ondersteund in Internet Explorer 6. Ook al zijn anchors de meeste voorkomende elementen om een hover effect bij te gebruiken, toch is het ook vaak handig om b.v. menu items een andere opmaak te geven als er met de muis overgegaan wordt. Dankzij het kleine "Whatever:hover” script kunnen we deze functionaliteit toch beschikbaar maken voor IE6.

Position: fixed

Een eigenschap die vaak vergeten wordt is "position:fixed". Hiermee kan je block elementen los over je pagina laten zweven. Een handige toepassing hiervan is het gebruik van een navigatiebalk of footer die steeds zichtbaar blijft. Aangezien veel designers hier niet eens kennis van hebben, wordt er maar zelden gebruik van gemaakt.

Besluit

Met een paar kleine toegevingen is het voor webdesigners zeker mogelijk om nieuwe vooruitstrevende technieken te gebruiken, als er maar een toegankelijk en aanvaardbaar alternatief wordt voorzien voor gebruikers van browsers die deze technieken niet ondersteunen. De bovenstaande voorbeelden heb ik voorgesteld in een kleine testcase.

In een later artikel gaan we in op nieuwe opmaak technieken in CSS3 die gebruikt kunnen worden in nieuwe browsers en toch een aanvaardbaar alternatief bieden voor oudere browsers zoals Internet Explorer 6.

2 Reacties op deze blogpost:

Rob Hofker
Door Rob Hofker op 26 november 2008

Goed artikel. Ben benieuwd naar het vervolg.

Ik ben eigenlijk al een stap verder dan "Graceful Degradation". Ik negeer IE6 het liefst compleet en kijk aan het eind van het hele proces of de site er nog een beetje uit ziet in IE6. Als het nog bruikbaar is, dan is dat bij wijze van spreke al meer dan voldoende.
Slechts wat layout problemen repareer ik via een conditioneel geladen stylesheet. Verder wil ik er gewoon niet te veel aandacht aan schenken.

Ik speel geregeld met het idee om IE6 gebruikers een ouderwetse waarschuwing voor te schotelen dat ze een verouderde browser gebruiken die veel van hun plezier bederft. (Ook van het mijne geregeld.)

Helaas, ben ik van tijd tot tijd bezig met Intranet toepassingen waarbij juist voor IE6 ontworpen moet worden en dta is een hele grote PITA.

David Candreva
Door David Candreva op 26 november 2008

@Rob, het achterwege laten van IE6 is not-done volgens mij. Iemand met kennis van CSS/HTML kan op een halfuurtje extra het ook compatibel maken voor IE6 (al dan niet pixel perfect). Gemiddeld 20% - 40% van de bezoekers van alle websites gebruiken nog IE6 en dat mag je echt niet vergeten zeker niet als "Web Architect" of als het systeem publiek toegankelijk is.

Een externe stylesheet voor IE6 is een goede oplossing maar ik probeer het gebruik hiervan te beperken en liefst helemaal niet. Meestal is het met een regeltje code op te lossen en wat dus "overkill" is om in een aparte stylesheet te plaatsen.

@Dirk:

De komst van CSS3 zijn 2 stappen vooruit maar IE6 is dan weer een stap achteruit voor de developers.

Denk je niet dat het een beetje overbodig gaat worden om CSS3 ook compatibel te maken met IE6? Vooral omdat het meestal om mooiere effecten gaan (ronde hoekjes, text-effects,...) dat geen ramp is om in de toekomst achterwege te laten voor IE6 al spreek ik voor over enkele jaren jammer genoeg..

Mensen die meer willen weten over CSS3 kunnen hier terecht.

Reageer ook op dit artikel

U kan optioneel inloggen met Twitter of Facebook. U krijgt dan de mogelijk om uw reactie ook te delen via Twitter of Facebook
Login with twitter
Aanmelden