- Why do browser vendors make their own css properties, even they know these properties will not pass the w3c validation before approved and added by w3c?
- What is the purpose? Is for their own testing, or for web developers, or to demonstrate browser capabilities to the world and to the W3C organizations and to CSS development team of W3C?
- is it like a beta version of demonstration?
- if i use any browser specific for now can they remove that property's support from future versions.will i have to edit my css in future
For example:
https://developer.mozilla.org/en/CSS_Reference/Mozilla_Extensions
they are mostly work-in-progress from for example css2->css3, but since a browser doesn't yet support it (like css3), it is exposed with different names.
The standards process doesn’t run like this:
Like any IT project, the spec is written, then bits of it are implemented, then the spec is changed based on lessons learned during implementation. It’s a delicate dance, as Robert O’Callahan said.
Doing initial implementations with vendor prefixes means that if the spec is changed later, existing code written against the existing implementations won’t break.
Vendor prefixes also allow browser-makers to experiment just for the heck of it, which can result is quite nice things like Safari’s gradients.
I'm not privy to the specifics of the CSS standards evolution, one can guess that following are the main reasons for manufacturers to "draw outside of the lines" of the standards.
While effectively circumventing the established standardization process, the above drivers are probably well meaning and mindful of the greater good. There are unfortunately less noble reasons:
What the W3C is thinking about is the syntaxis. Let's take gradient for an example:
Both these codes generate the same gradient. As you can see, there's no standard procedure, the syntaxis is both confusing and different for webkit and mozilla based browsers.
But let's imagine in two or three years, the implementation is done. Now you just have to add another line of code for the standard.
Now both engines will understand the gradient statment and if it's specified after the extension ones, this last one will be the one to interpret.
They do it for several reasons:
And yes, sadly those properties may change or even disappear in future versions, necessitating code changes. Bottom line: stick to standards, or at least be aware that any current shiny feature has a future price.
mozilla has extensions which are likely to be in the next css standard just to be one step ahead. when these properties will be standard, use them without the moz prefix, in order to support more than just one browser.