¿Por qué los navegadores crean prefijos de proveedores para las propiedades CSS?

Resuelto Naftuli Kay asked hace 13 años • 2 respuestas

Quizás sea una respuesta obvia, pero

¿Por qué los navegadores decidirían crear sus propios prefijos de proveedor border-radiusy similares?

Quiero decir: ¿Por qué tengo que escribir?

-moz-border-radius: 10px;
-webkit-border-radius: 10px;
border-radius: 10px;

¿Es porque cada plataforma pensó: "Estamos bien, encontraremos una mejor manera de hacer esquinas redondeadas?" Parece total e inexplicablemente redundante escribir tres líneas por una.

Naftuli Kay avatar Nov 15 '11 12:11 Naftuli Kay
Aceptado

Esto se debe a que los proveedores implementaron las características antes de que la especificación alcanzara su etapa de lanzamiento final.

Los prefijos de proveedor garantizan que no haya conflictos con los cambios de funcionalidad, etc.

Originalmente, el objetivo de los prefijos de proveedores era permitir a los fabricantes de navegadores comenzar a admitir declaraciones CSS experimentales.

Digamos que un grupo de trabajo del W3C está discutiendo una declaración de grilla (lo cual, dicho sea de paso, no sería tan mala idea). Además, digamos que algunas personas crean un borrador de especificación, pero otras no están de acuerdo con algunos de los detalles. Como sabemos, este proceso puede llevar años.

Digamos además que Microsoft como experimento decide implementar la grilla propuesta. En este momento, Microsoft no puede estar seguro de que la especificación no cambie. Por lo tanto, en lugar de agregar grid a su CSS, agrega -ms-grid.

El prefijo del proveedor dice "esta es la interpretación de Microsoft de una propuesta en curso". Por lo tanto, si la definición final de grid es diferente, Microsoft puede agregar una nueva grid de propiedades CSS sin dividir las páginas que dependen de -ms-grid.

Fuente .

alex avatar Nov 15 '2011 05:11 alex

Como esta publicación es anterior, es importante mencionar que ahora la mayoría de los proveedores entienden que estos prefijos simplemente crean código duplicado innecesario y la situación en la que necesita especificar 3 reglas CSS diferentes para que un efecto funcione en todos los navegadores es una situación no deseada.

Como se menciona en este glosario sobre la opinión de Mozilla sobre los prefijos de proveedores el 3 de mayo de 2016,

Los proveedores de navegadores ahora están intentando deshacerse del prefijo de proveedor para las funciones experimentales. Se dieron cuenta de que los desarrolladores web los utilizaban en sitios web de producción, contaminando el espacio global y dificultando el buen desempeño de los menos favorecidos.

Por ejemplo, hace apenas unos años, para poner una esquina redondeada en un cuadro había que escribir:

-moz-border-radius: 10px 5px;
-webkit-border-top-left-radius: 10px;
-webkit-border-top-right-radius: 5px;
-webkit-border-bottom-right-radius: 10px;
-webkit-border-bottom-left-radius: 5px;
border-radius: 10px 5px;

Pero ahora que los navegadores son totalmente compatibles con esta función, en realidad sólo necesitas la versión estandarizada:

border-radius: 10px 5px;
Raman Sahasi avatar Jul 29 '2016 05:07 Raman Sahasi