2010-07-06

On New Tricks, Old Hacks, and Web Browsers

I must say, I'm a little curious why I haven't seen mention of this before; a quick Google search didn't turn anything up either. For the last, oh, ten years or so, web designers have been wrestling with all the different browsers, and different versions of each browser, to get their web pages to behave the same - or at the very least, behave relatively well - on all the browsers their users are likely to employ.

The whole time, the W3C has been releasing new standards and new versions of old standards to give web designers new tricks... and every time, the browsers all catch up to the new standards at different speeds, and implement different parts of the standards, or implement them slightly differently.

My question, then, is this: why is there no W3C specification for browser detection? Why can't I use CSS selectors to target certain styles at certain browsers, without resorting to lousy hacks? Even CSS3's new media queries allow me to check the screen size before applying styles, but not whether or not the browser supports, say, CSS3 Of course, it'll take forever for designers to be able to count on all the browsers supporting a new feature like that, but I haven't even seen a proposal.

Today, putting together a design involves pulling up your design in all the browsers, figuring out what works and what doesn't, and then applying hacks specific to each browser. Life would be so much easier in the web design world if instead you could say something like, "if the browser doesn't support CSS3 background properties, apply this style instead."

Suddenly, I don't need to use the hack that hides CSS from IE, and the other hack that hides CSS from everything but IE, and test it, and then find another set of hacks for the Android browser, and another for FireFox, and so on. I can apply styles logically by selecting for specific features, rather than selecting for specific browsers, then having to keep up with the features of each browser - because the features are all I really care about as a designer.

I would much rather "hack" for specific features than specific browsers because it's more intuitive, and it's less work to support multiple browsers and different versions of each browser. The browser makers know what features they support. If I can select for the features I want to use, I don't have to worry about keeping up-to-date with what features are supported by what versions of what browsers.

I'm bringing it up on the W3C mailing list, but I thought I would bring it up here... I'd love to hear your thoughts in the comments!