2011-05-11 10 views
8

Me encontré con lo que me parece un comportamiento absurdo. Si IE8 no comprende parte de una regla no tiene en cuenta toda la cosa:¿Hay alguna manera de hacer que IE8 no ignore una regla CSS que solo entiende parcialmente?

input[type=radio]:checked, 
input.checked { 
    /* Some CSS */ 
} 

Ya tengo IE8 JS específicos de adquirir esta clase .checked, pero debido a que no entiende :checked, ignora toda la cosa, por lo estoy obligado a tener ahora varias reglas:

input[type=radio]:checked{ 
    /* Some CSS */ 
} 
input.checked { 
    /* The exact same CSS */ 
} 

Así que mi pregunta - ¿alguien sabe de una manera de conseguir IE8 y abajo para pasar por alto el :checked en vez de tirar toda la regla?

ejemplo muy básico: http://jsfiddle.net/8UT56/

+0

¿Qué sucede si la regla "entendida" es lo primero? p.ej. 'input.checked, input [type = radio]: checked'? –

+0

@pst: aún se ignora –

+3

No es un comportamiento absurdo. Por una vez, IE8 está actuando de acuerdo con [las especificaciones] (http://www.w3.org/TR/CSS21/syndata.html#rule-sets): 'la declaración completa debe ignorarse si hay un error en alguna parte el selector'. No estoy seguro si hay una solución alternativa. – user123444555621

Respuesta

1

Usted puede usar una biblioteca como http://selectivizr.com/ para dar IE nuevos selectores.

+1

¿Soy el único en molestarme con JS para corregir el CSS? –

+1

Bueno, es solo para navegadores antiguos, y te permite usar solo CSS para la mayoría de las personas. Solía ​​sentirme así, pero ahora me doy cuenta de que HTML + CSS + JS es la plataforma, y ​​que para la mayoría de los proyectos ya confías en los 3 para hacer el trabajo. –

+0

Tenga en cuenta que aunque CSS se puede descargar y analizar en paralelo, JS no lo hará. Si los usuarios de IE8 son una gran parte de tu base de usuarios, considera hacer este lado del servidor. – Henrik

Cuestiones relacionadas