Sitepoint.com recently wrote about the "CSS3 vendor prefix crisis" We're living in treacherous times, indeed.
If you're not familiar with the "crisis", it looks something like this:
So there's a bunch of properties in the CSS3 spec that are either new or not completely defined by the spec yet, and developers want to use them anyway. Ergo, browser makers have listened to developer and started implementing support for said properties. But for concern that the spec will change, or the implementation on the browser vendor's side isn't fully settled on yet, developers have had to use "vendor specific prefixes" to the properties like, -webkit-
, -moz-
, -ms-
, -o-
, etc.
These vendor specific prefixes are sort of like a caveat in the stylesheet that says, "this is not an official spec implementation, but just a tentative implementation as decided on by the specific browser vendor being targeted."
Problem is, it's getting rediculous. To cover support for any given property on as many browser as possible, devs have to write dozens upon dozens of extra lines of code in a given stylesheet because of these prefixes.
Take for example the humble but mighty CSS3 transition
property, which theoretically must be written as such to cover a full range of browser support:
element{
-webkit-transition: all .3s ease;
-khtml-transition: all .3s ease;
-moz-transition: all .3s ease;
-ms-transition: all .3s ease;
-o-transition: all .3s ease;
transition: all .3s ease;
}
In addition to causing code bloat, an even more current piece of the vendor prefix crisis discussion centers around browser makers beginning to add support for other browser vendor's prefixes -webkit-
specific prefixes. The reason for this is simply that webkit is so freaking awesome webkit's flavor of implementations have become so popular that many devs have begun only using -webkit-
prefixes and neglecting other vendor prefixes, making the other browsers appear subpar in their page rendering because only -webkit- is gettin' the lovin'.
So take a few minutes and read the article from the link above to see what some of the proposed solutions are to this crisis, and what the pros and cons are. I won't spoil it for ya.
NOTE: I'm not necessarily advocating for any solution mentioned by Sitepoint's article - I just think it's an interesting look at the problem and the solution from several vantage points, comparing PROS and CONS.
Personally, I think the right answer is that developers need to begin to stop using vendor specific prefixes altogether (may be practical...may not be) and force browser makers to simply implement non-vendor specific versions of the property in an aim toward same markup for all browsers. AGAIN, may or may not be practical, but from a purely philosophical standpoint that's my opinion.