IE8 is here and I already hate it. It comes with lots of new features for the user- I’m not an IE8 user so I won’t comment on them, time will tell whether they’re any use. What it lacks however are any real changes to the rendering engine. As suspected from experimenting with the Beta version, there’s some tweaks here and there, largely involving CSS2.1, which should have been implemented a long time ago. Very little of CSS3 has been implemented, aside from the more advanced selectors, most of which, to be fair, were available in IE7.
One thing that has changed is that the various Microsoft-specific CSS properties that have been introduced over the years have been renamed so they’re now all accessible with the prefix “-ms-”. Or are they? Well, they are in IE8’s Standards Mode. Similar to previous version of Internet Explorer, there is Standards mode (used when the HTML file has a proper <!doctype> declaration) and Quirks mode (used when it doesn’t have a <!doctype> declaration).
If you were confused before, prepare to be really confused because the Standards modes and Quirks modes are not consistent across Internet Explorer versions. IE8 Standards Mode will render differently to IE7 Standards Mode – I guess this only to be expected since they’ve added and removed support for various attributes.
This is where the “Document Compatibility Mode” comes into play. Say I have a HTML page, well-formed and tested on all current browsers including IE7. This page makes use of semi-transparent backgrounds, so I have the “filter: ” attribute set for Internet Explorer and the “opacity: ” attribute set for everything else. In IE8, suddenly, “filter :” no longer exists, instead replaced by “-ms-filter: “. So IE8 does not pick up on our “filter: ” attribute and does not support the CSS3 “opacity: ” attribute.
Brilliant! What do we do now? Do we add yet another CSS attribute to these selectors – essentially using three declarations to achieve one effect? Apparently not - not when we have “Document Compatibility Mode”. Our <!doctype> declaration means that IE is rendering in IE8 Standards Mode but Microsoft have afforded us the possibility to use IE7 Standards Mode by including the following <meta> tag.
<meta http-equiv=”X-UA-Compatible” content=”IE-EmulateIE7″ />
I don’t understand this move. Microsoft’s site shouts about IE8 being the most standards-compliant release yet. But they give developers an easy way out by allowing them to keep their site in IE7 mode. Any developer will tell you that the bane of their life is dealing with large numbers of users that are still running IE6 so why would you want to restrict yourself to developing for IE7. We need progression – we need users and developers to move forward, otherwise the Web will sat in the same place forever.