This answer really made me wonder.I've written CSS before and (usually) I don't really bother to support browsers other than recent firefox and chrome, but in researching I've noticed that, for the exact same CSS property, there are usually at least three different forms which behave identically, and can have the same values, but which all simply have different prefixes for the specific library that implements them.Here, for example:-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;With the sole exception of the first one, these only differ by prefix. Why don't maintainers simply change the lexer rule which matches the string -moz-user-select to also match user-select? Sure, there's the possibility that the author of the original CSS wanted different behavior for Firefox v. other browsers, so user-select won't be the same as -moz-user-select, but the risk of that weird corner case is far outweighed by the advantage, and there are other, arguably better ways to accomplish the browser-specific goal.If this is already occurring, why do people still use all of these? If they stopped:there would be fewer bits clogging the metaphorical pipes of the internet (network latency would go way down, plus individual pages would load faster), andpeople using ancient browsers would be given the impetus they need to update (which they should do for security reasons, anyway)TL;DRWhat would the disadvantage be of everyone using the same naming convention? Why haven't things normalized by now?
Why are there so many CSS properties which are essentially the same?
naming;css;standards
Most of these are due to vendor prefixes.A new standard that has not been finalized may get implemented in a browser, but since it has not been finalized, the browser vendor (creator) will not want to use the official correct attribute, but they still want to support the feature.So they add a prefix - -webkit-*, -moz-*, -khtml- and -ms-* are specific to the different browsers/rendering engines.And as a developer, while browsers gain support but don't yet use the official name, you may want to support the feature - so you add the vendor prefixes and the official one for future proofing.Sometimes a feature changes name during the standardization process, so you end up with a vendor prefix using a different name, or having two different names for the same feature (normally in different browser versions of the same rendering engine).Why haven't things normalized by now?New standards are being worked on and getting finalized all the time. Different vendors have different priorities on which vendors they want to support. So - a moving target + different priorities, gives you... vendor prefixes and no single standard name at one point in time.