With the rise of support and understanding of css3 and html5 recently, I’ve been really frustrated by the constraints placed upon front end web developers by legacy browsers. Yes I’m talking IE6, IE7 and even IE8 (not quite legacy just yet).
So where does that leave us? Well it’s kind of a two fold question in my opinion. Firstly for a lot of properties like border-radius, text-shadow and gradients should for the moment, be used as an aesthetic improvement on the design and not an integral component of the page. Using these properties should add something to the page, but if not supported then the functionality remain.
The real problem and frustration arises when more functional properties are required, I’m talking about first-child, nth-child and multiple backgrounds. If used, these properties would be essential to the functionality of the website. So, in this case legacy IE browsers will not render the layout of the page correctly. The safest work around for this would be to emulate them with javascript, JQuery provides built in selectors for a lot of child selectors. The downside to this is the added overheads, if used too often the performance could become an issue.
So what is the solution?
There is, “no best” solution, so here are a few:
- first off there’s a great plugin for IE from chrome, the google chrome frame. This solution utilising html5, forces the older ie browsers to use the latest updated engine from chrome. The downside to this great plugin is that it has to be enforced on both ends for this to work. The web developer must insert the code into the html5 webpage (this comes part of the html5 boilerplate template), and then the user must have the plugin installed. So as promising as this solution is, I think there’s too much hastle and responsibility left with the user for this to become a viable solution.
I think the best solution to these problems is a combination of all of the available resources. There is no magical fix to old browsers, they were designed and built a long time ago. First off, know your traffic. If you have a web developer blog
chances are not many people will be viewing the site in a legacy browser, if your website has a large traffic base that view your site from work chances are they may be forced to use old browsers. Check your analytics and if the percentage is high enough, cater for them or you will be turning a lot of people away. Chrome frame is a great place to start for the developer, it is one line of code that if installed on the client side, will mean a better user experience overall. From here on you’re in guess mode. For a lot of the new selectors like I mentioned above with :nth-child etc, these can be emulated with JQuery, you can use conditional statements for the external javascript file, so you the new browsers don’t download unnecessary files. For presentation, I’m now using css rounded corners and subtle gradients more and more you know what IE can bite it! If you’re trying to debug your css and are facing problems a great resource is firebug lite, a javascript version of firebug that will be visible in all the browsers that firebug is not installed on. A huge frustration of mine, is when people want IE6 to render EXACTLY the same as in newer browsers, guess what? It’s over 10 years old now….it’s not going to look the same, get over it.
the happy medium is not for your IE6 to look amazing, but for the functionality to be there, you may not be able to reproduce that cool effect you can see in all the other browsers, but if your site does what it should be. That’s good enough. As I said earlier, if a lot of your traffic is from ie6 design your site to be ie friendly, if not you can probably be a bit more lenient.
So that’s my rant, let me know if you liked anything I mentioned or thought I was talking shit. Peace