2010-03-06 7 views
26

Lo que más odio en CSS3 es que siempre hay dos propiedades que debe poner para hacer un efecto. Creo que esto no es profesional, y aumenta el tamaño de CSS. Por ejemplo, ¿por qué no se unen y -webkit-border-radius-moz-border-radius en border-radius¿Por qué hay -moz-XXX y -webkit-XXX en el CSS3?

Imagínese si tenemos 10 navegadores, vamos a escribir 10 líneas para hacer un efecto de esquinas redondeadas? ¿Alguien puede explicar?

Respuesta

29

Es porque son específicos del fabricante. -webkit- y -moz- -Las propiedades prefijadas son no propiedades estándar. Ese "espacio de nombres" permite a los proveedores probar nuevas funciones geniales, y si son geniales, pueden incorporarse a los estándares. Esto es lo que está sucediendo con CSS3: Mozilla y el equipo de Webkit probaron cosas geniales, y ahora se convertirán en estándares. Simplemente no ha terminado todavía. Eventualmente se convertirá en una propiedad consistente en border-radius.

Es una forma clara de indicar que no se espera que algo funcione en todos los navegadores. Por ejemplo, -webkit-transition-property solo funciona en navegadores basados ​​en Webkit.

De todos modos, -webkit-border-radius y -moz-border-radius no funcionan exactamente igual. Se debe a que cada proveedor, a pesar de estar haciendo cosas similares, puede implementar las funciones de la forma que desee. El estándar establecerá una forma estándar, pero todos pueden hacer lo que quieran dentro de su propio espacio de nombres.

+1

Pero creo que ambos pueden construir sus motores para analizar el "radio del borde" al igual que lo que hicieron para analizar "-webkit-" o "-moz-" especificar etiqueta Los motores pueden ignorar etiquetas o atributos, si no están dispuestos a manejarlo. Aún así, creo que hay alguna razón específica para usar "-webkit-" o "-moz-" con las etiquetas. –

+3

@Kumaresan, los proveedores no pueden construir sus motores para aceptar sintaxis no estándar a las propiedades estándar. Las propiedades estándar deben aceptar solo una misma sintaxis en todos los navegadores y no deben ser más permisivas que eso. CSS debería funcionar absolutamente igual en todos los navegadores: si alguna sintaxis funcionara en un navegador pero no en otro, entonces no sería estándar. – zneak

+0

¡Pero NO es estándar! Por eso están saltando todos estos aros, innecesariamente. Como no es estándar, solo use la etiqueta estándar no estándar, y luego si/cuando se convierte en estándar ... BOOM: ¡Estamos listos para empezar! Los desarrolladores deben saber qué propiedades son compatibles y cuáles no son sin necesidad de '' -ugly-specific-prefixes'' – Volte

8

-webkit-border-radius y -moz-border-radius se crearon antes de que el estándar de bordes CSS3 fuera completo (aún no es un estándar aprobado, actualmente es una Recomendación candidata).

La norma solo requiere un border-radius, como se puede ver en el specification.

Son específicos para mozilla y webkit: una vez que se aprueba el estándar, esto debería cambiar a border-radius en todos los navegadores compatibles.

+0

Hola. En el momento en que se convertirá en un estándar, ¿seguirá siendo compatible el prefijo? (P.s., Mis felicitaciones por ♦) –

+1

@RoyiNamir: Hasta donde sé, los prefijos de los proveedores seguirán siendo compatibles, pero en ese momento ya no se necesitan. Y gracias ... el diamante viene con el trabajo;) – Oded

Cuestiones relacionadas