Existe uma razão válida para que os navegadores prefixem novos recursos CSS, em vez de permitir que os webmasters usem a versão não prefixada?
Por exemplo, um código de exemplo para o gradiente de fundo é semelhante a:
#arbitrary-stops {
/* fallback DIY*/
/* Safari 4-5, Chrome 1-9 */
background: -webkit-gradient(linear, left top, right top, from(#2F2727), color-stop(0.05, #1a82f7), color-stop(0.5, #2F2727), color-stop(0.95, #1a82f7), to(#2F2727));
/* Safari 5.1+, Chrome 10+ */
background: -webkit-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* Firefox 3.6+ */
background: -moz-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* IE 10 */
background: -ms-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
/* Opera 11.10+ */
background: -o-linear-gradient(left, #2F2727, #1a82f7 5%, #2F2727, #1a82f7 95%, #2F2727);
}
Qual o sentido de forçar os webmasters a copiar e colar o mesmo código quatro vezes para obter o mesmo resultado?
Nota: um dos motivos frequentemente citados é que os estilos prefixados devem ser temporários, enquanto o navegador não implementa a especificação corretamente ou a especificação não é definitiva .
IMO, esse motivo é um absurdo:
- Se o mecanismo do navegador não implementar as especificações corretamente, o navegador não será compatível, independentemente de não ser implementado em um formato não prefixado ou não em um formato prefixado.
- Se a especificação não for definitiva, pode ser importante quando houve implementações anteriores com o mesmo nome. Por exemplo, se o CSS2 tivesse
linear-gradient
, mas o CSS3 pretendesse se estenderlinear-gradient
com recursos adicionais, seria inteligente prefixar temporariamente a nova implementação de rascunho e-css3-<style>
diferenciação entre o CSS2 em funcionamento e o CSS3 experimental. Na prática, o CSS2 não possuilinear-gradient
ou outras novidades do CSS3.
Eu também entenderia se navegadores diferentes tinham formatos de implementação diferentes : por exemplo, digamos que o Firefox seja necessário, para sombra de texto <weight-of-shadow distance-x distance-y color>
, enquanto o Chrome seja necessário <distance-x distance-y weight-of-shadow color>
. Mas, na verdade, este não é o caso; pelo menos todos os novos recursos do CSS3 que eu usei até agora tinham o mesmo formato.
If the browser engine does not implement the spec correctly, the browser will not be compliant
- Bem-vindo ao mundo real. ™