Thursday 26 August 2004

Oh, I completely give up!


Since 2001 I've used a standard stylesheet for my home page which has the navigation panel fixed to the right hand side of the browser so it doesn't scroll with the page but is always available. It's a nice trick. When I wrote this stylesheet, there were two browsers available which rendered it corectly. One was Konqueror, and the other was a late beta for Microsoft Internet Explorer 6.


That beta was really very, very good indeed. It correctly dealt with all the interesting test stylesheets I threw at it. So I was really frustrated and annoyed when the final version of Internet Explorer 6 - the one which actually got released - had a very broken CSS engine.

Now, three years later, most of the available browsers render my stylesheet correctly. Mozilla does, and consequently, so of course does Netscape, which uses Mozilla's rendering engine. Konqueror does, and consequently so does Safari, which uses Konqueror's rendering engine. Opera, naturally, does. But one browser notably does not: Internet Explorer.

And what is really irritating is it isn't because they can't. It isn't because poor ickle Microsoft don't have sufficiently skilled software people to manage it. Not only is Microsoft the biggest and richest software house on the planet, they have already done it - as the IE6 beta proved. They know how to do this. They choose not to.

For years I've put up with the fact that Microsoft's customers could not see my home page as I intended it. It shouldn't matter, of course, because my page is designed to degrade gracefully, so they get the full functionality even if it doesn't look as good as it could. But over the past couple of days I decided to work up a new stylesheet which would look good with every browser. I did away with the fixed right hand nav panel and instead floated it left. I kept the visuals simple and attempted just one visual trick: using a fixed background graphic for the body text, and a the inverse of that graphic as a fixed background for the sidebar.

On standards compliant browsers the result looks simple but elegant, and I was extremely pleased with it... until I tried it on Internet Explorer.

And Internet Explorer, of course, naturally, doesn't use the same graphic origin for the backgrounds of embedded elements as it does for the background of the page. And also it doesn't compute relative widths correctly. So the headers which in the new stylesheet should line up exactly with the edge of the sidebar don't do so. And the graphic, which should flow seamlessly from a positive image under the body to a negative image under the sidebar doesn't marry up correctly.

So why do Microsoft choose to distribute a broken browser? Is it because they think the World Wide Web is not important enough for them to bother with?

It could be, but frankly I don't think so.

I think it's another example of 'embrace and extend'. Microsoft, I think, hopes to force people either to code their pages and stylesheets twice - once for standards compliant browsers and once for Internet Explorer - or else put up with the fact that their pages are going to look pretty crummy either on Internet Explorer or on standards compliant browsers. Microsoft hopes also that naiive customers, looking at websites which are coded for Internet Explorer with other browsers, will assume it's the other browsers which are broken.

Allegedly Microsoft are now getting a little rattled by the success of the new Mozilla browsers. Allegedly they plan to do something about how far behind on technology Internet Explorer is getting. Allegedly there will be a new version out soon.

Perhaps this new version will fix Microsoft's broken rendering engine. Perhaps. I'm not holding my breath. And furthermore, I am not changing my stylesheet, either. If this page looks crap to you, just consider whether it's my fault. Or yours, for choosing to support a monopoly which is deliberately breaking standards.

No comments:

Creative Commons Licence
The fool on the hill by Simon Brooke is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License