2011-11-15 8 views
56

Tal vez es una respuesta obvia, pero¿Por qué los navegadores crean prefijos de proveedor para las propiedades de CSS?

¿Por qué en la tierra habría navegadores decidir crear sus propios prefijos vendedor para border-radius y 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, vamos a llegar a una mejor manera de hacer las esquinas redondeadas? " Parece totalmente e inexplicablemente redundante escribir tres líneas para una.

+11

"¿es porque cada plataforma de pensamiento 'estamos bien, vamos a llegar a una mejor * * manera de hacer las esquinas redondeadas?'" Precisamente. – BoltClock

Respuesta

50

Es porque las características fueron implementadas por los proveedores antes de que la especificación alcanzara su etapa de lanzamiento final.

prefijos

el vendedor aseguran que no hay enfrentamientos con el cambio de funcionalidad, etc.

Originalmente, el punto de prefijos de proveedores era permitir que los fabricantes de navegadores a empezar a apoyar declaraciones CSS experimentales.

Digamos que un grupo de trabajo del W3C está discutiendo una declaración de la red (que, por cierto, no sería una mala idea). Digamos además que algunas personas crean un borrador de especificación, pero otros no están de acuerdo con algunos de los detalles. Como sabemos, este proceso puede tomar años.

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

El prefijo proveedor tipo de dice “esta es la interpretación Microsoft de una propuesta en curso.” Por lo tanto, si la definición final de la rejilla es diferente, Microsoft puede añadir una nueva cuadrícula de propiedades CSS sin romper páginas que dependen de -ms-grid

Source.

+0

De acuerdo. Las ideas nuevas tardan un tiempo en ratificarse en el mundo de Internet, por lo que puede terminar con todo tipo de atributos interesantes. Algunas ideas nunca se ratifican, mientras que otras solo son implementadas por un puñado de proveedores. – user978122

+1

También me gusta agregar que, si bien algunas especificaciones de CSS ya han concluido, todavía las usamos para los antiguos soportes de navegador. – Th3Alchemist

10

ACTUALIZACIÓN A partir del año 2016

Como este post 3 años de edad, es importante mencionar que ahora la mayoría de los vendedores entienden que estos prefijos son sólo la creación de código duplicado un-necesario y la situación en la que Es necesario especificar 3 reglas de CSS diferentes para que un efecto funcione en todos los navegadores y es uno no deseado.

Como se mencionó en this glossary sobre la visión de Mozilla en Vendor Prefix en May 3, 2016,

fabricantes de navegadores están ahora tratando de deshacerse de prefijo de proveedor para experimentales características. Se dieron cuenta de que los desarrolladores web los estaban usando en los sitios web de producción , contaminando el espacio global, y haciéndolo más difícil para los desvalidos tener un buen rendimiento.

Por ejemplo, hace unos pocos años, para establecer una esquina redondeada en una caja que tení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 han venido a apoyar plenamente esta función, que realmente sólo necesitará la versión estandarizada:

border-radius: 10px 5px; 
Cuestiones relacionadas