2012-01-23 16 views
6

¿Es posible omitir Internet Explorer o evitar leer una línea en la hoja de estilo CSS?IE Hackear cómo hacer que IE omita/evite leer una línea en la hoja de estilos

Me preocupa principalmente IE8, pero me interesan las soluciones para cualquier versión.

+0

seguro, pero tendrás que ser más específico, ¿qué versión de IE? –

+0

http://css-tricks.com/how-to-create-an-ie-only-stylesheet/ – Konerak

+0

@Madmartigan: Tengo. Por favor lea el enlace. Desplázate hacia abajo. 'Hacks'. – Konerak

Respuesta

6

Para evitar que IE8 (y anteriores) lean los estilos, simplemente use algo en su selector que no sea compatible y que todos los otros navegadores sean compatibles.

Por ejemplo, agregue :root a su selector. He aquí un ejemplo: http://jsfiddle.net/mathias/kX6tR/

.foo { background: red; } 
:root .foo { background: lime; } 

:root se apoya en IE9 y todos los demás navegadores, por lo tanto, este es un safe CSS hack.

+0

Agradable, estaba a punto de sugerir exactamente lo mismo. No hay necesidad de hacks aquí. –

+0

Este es uno de los "hacks" más útiles que he visto. Gracias. –

1

otra opción:

Vamos IE leer la línea en su hoja de estilo, y luego sobrescribir la línea en un ejemplo de estilo específica cargado posteriormente mediante el uso de un comentario condicional:

http://www.quirksmode.org/css/condcom.html

de esa manera se mantén tus hojas de estilo libres de hacks de selector.

+0

+1, los enunciados condicionales son mejores que los hacks en mi humilde opinión. – Tim

+1

+0 Los archivos CSS condicional son una pesadilla de mantenimiento y tenemos otras opciones libres de pirateo. –

+0

Usar hojas de estilo específicas de IE por separado es una muy mala idea. Razones: http://mathiasbynens.be/notes/safe-css-hacks –

3

Siempre es mejor evitar los hacks por completo. Lo correcto en su caso es redefinir su regla CSS para IE en una hoja de estilo separada e incluirla después del archivo de estilo principal.

<link rel="stylesheet" href="nice_browsers.css" /> 
<!--[if IE]> 
<link rel="stylesheet" href="dumb_ie.css" /> 
<![endif]--> 

Además navegadores normales no van a descargar el segundo archivo, por lo que no hay petición HTTP adicional. Y el archivo CSS principal validará (si te importa eso, y probablemente deberías)

+0

Siempre es mejor evitar los hacks por completo. Es cierto, pero ¿quién está sugiriendo o solicitando un "truco"? –

+0

@Madmartigan El truco es piratear, incluso si se considera "seguro". Tienes razón y la solución de Mathias Bynens está absolutamente bien. El único problema con los hacks: funcionan hoy, pero mañana podrían romperse o comportarse de una forma inesperada. Pero eso es solo "poder" :) –

+0

Los hacks tradicionales de IE se basan en un analizador reventado y CSS no válido. Sin embargo, puedo pensar en esto: probablemente haya otros navegadores que no soportan ': root' que será golpeado por la regla" IE "involuntariamente, entonces en ese sentido veo cómo es un hack, pero dudo mucho de que IE8 de repente comenzará a soportarlo. –

Cuestiones relacionadas