Mi sugerencia:
Uso CSS3Pie - http://css3pie.com/
Esta es una biblioteca JavaScript para IE6, IE7 e IE8 que los parches en apoyo a varias características de CSS3, incluyendo gradientes.
Sí, puede utilizar los horribles estilos específicos de IE filter
si lo desea, pero CSS3Pie le permite usar estilos CSS estándar para estas funciones. Más fácil.
Para responder realmente su pregunta directa:
Sí, generalmente se requiere el estilo -ms-filter
. IE8 siempre nos lo usará en lugar de filter
, que se usa principalmente para IE6 e IE7. En algunos casos, filter
funcionará en IE8, pero no en todos, por lo que es mejor usar -ms-filter
para garantizar la compatibilidad con IE8.
[EDITADO] ¿Por qué lo cambiaron? Porque cuando lanzaron IE8, Microsoft hizo un gran esfuerzo por tratar de ser "compatible con los estándares".
Para que un navegador sea estándar, debe usar un prefijo de proveedor para cualquier propiedad CSS compatible que no sea un estándar W3C finalizado. Entonces, al agregar el prefijo -ms-
, Microsoft intentaba (tardíamente) deshacer la contaminación del espacio de nombres CSS global.
Además, se agregaron las comillas, porque la antigua sintaxis filter
sin las comillas era CSS no válido (principalmente debido a los dos puntos después de progid
) y causaba problemas con algunos navegadores. (Tuve una instancia hace un tiempo con Firefox 3.6 donde se descartaban todos los estilos siguiendo un estilo filter
que rotaba un elemento; tardaba años en resolverse lo que estaba sucediendo).
El hecho de que Microsoft conservó la compatibilidad con la sintaxis original filter
, fue en gran medida una cuestión de pragmatismo. MS no podía darse el lujo de romper todos los sitios usando la sintaxis anterior. Pero hubo una fuerte implicación de Microsoft de que los desarrolladores deberían usar ambos porque soltarían soporte para el viejo estilo filter
en versiones posteriores de IE. Resultó que retiraron el soporte para filter
y -ms-filer
de un solo golpe, pero las implicaciones dadas en el lanzamiento de IE8 fueron suficientes para que se convirtiera en una práctica recomendada para proporcionar ambas sintaxis en su hoja de estilo.
En el momento en que se lanzó IE8, XHTML era el nuevo sabor del mes, y el código de escritura que se validó perfectamente fue uno de los primeros en la lista para muchos desarrolladores. Esta fue probablemente una fuerte fuerza impulsora en el cambio de sintaxis para incluir las comillas. Debido a los dos puntos, es imposible escribir CSS que valide el uso del antiguo estilo filter
. El uso de los nuevos estilos -ms-filter
permitió a las personas escribir CSS válidos. A medida que las buenas ideas van, esta realmente no funcionó porque, por supuesto, la gente tenía que seguir usando la sintaxis antigua de todos modos, pero la intención era buena.
Vale la pena señalar que otros estilos propietarios recibieron el mismo tratamiento. Por ejemplo, puede usar -ms-behavior
en IE8 en lugar del antiguo estilo behavior
. Nadie lo usa. ¿Por qué? Realmente no lo sé
Otro hecho que vale la pena saber es que el W3C está en el proceso de estandarizar un CSS property called filter
. Hará un trabajo completamente diferente al estilo Microsoft filter
, y funcionará de manera completamente diferente. Si/cuando está estandarizado y los navegadores comienzan a soportarlo, habrá un choque explícito entre las dos sintaxis.
Realmente no me gusta CSS3Pie. Ver [aquí] (http://stackoverflow.com/a/7668408/937084) y [aquí] (https://twitter.com/#!/grantmccall/status/117649720297525248). En el caso de degradados, la versión ** filter ** funciona en IE6, IE7, IE8 e IE9. En la vista previa de consumidor de IE10, solo funciona en modo compatibilidad. La versión de ** - ms-filter ** funciona en IE8 e IE9, pero * no * IE10, incluso en modo de compatibilidad. IE10 usa ** - ms-linear-gradient **. Parece que la versión de ** - ms-filter ** solo es buena para IE8 e IE9, pero ambas soportan ** filter ** también, ¿por qué molestarse con la versión de ** - ms-filter **? – Nick
He actualizado la respuesta con muchos más detalles sobre los por qué y cómo de -ms-filter. – Spudley
BTW - Tienes razón, CSS3Pie puede ser lento. Pero también lo son los filtros. Ninguno de los dos es lento, a menos que los uses en exceso. Y CSS3Pie tiene una gran ventaja de los filtros en el sentido de que admite colores de canal alfa para sus degradados, que no es el estilo de filtro de MS. Su otra opción, por supuesto, es simplemente utilizar un respaldo de color plano para el viejo IE. A menos que arruine totalmente el diseño de su sitio, o su audiencia tiene una gran proporción de usuarios de IE, a veces es más simple dejarles tener colores planos y esquinas cuadradas. – Spudley