2009-02-20 11 views

Respuesta

17

Los condicional (es) de IE van en el HTML, y se deben usar para incluir un archivo CSS adicional que sobrescribirá CSS según sea necesario para los hacks de IE.


Ejemplo:

<head> 
    <style type="text/css"> 
    @import url(/styles.css); 
    </style> 
    <!--[if lte IE 6]> 
     <link rel="stylesheet" type="text/css" href="ie6.css" /> 
    <![endif]--> 
</head> 
11

He seguido mi ejemplo desde jQuery y uso mi formato condicional para crear elementos de contenedor

<body class="center"> 
<!--[if IE 5]><div id="ie5" class="ie"><![endif]--> 
<!--[if IE 6]><div id="ie6" class="ie"><![endif]--> 
<!--[if IE 7]><div id="ie7" class="ie"><![endif]--> 
<!--[if IE 8]><div id="ie8" class="ie"><![endif]--> 
    <div class="site text-left"> 

    </div> 
<!--[if IE]></div><![endif]--> 
</body> 

entonces puedo poner la información condicional en css como tales

.site { width:500px; } 
.ie .site { width:400px; } 
#ie5 .site { width:300px; } 
+0

Uso este truco, yo mismo. Hace que sus archivos CSS sean más ordenados * y * evita que tenga que preocuparse por la precedencia del selector. –

+0

Enfoque interesante, no había visto esto antes. Personalmente prefiero mantener mi marcado limpio que mi CSS. ¡Pero a cada uno lo suyo! –

+0

+1 por el ingenioso truco. – Ishmael

3

no hay tal condicionales en CSS, pero se puede utilizar el "acebo Hack" si las diferencias entre las diversas versiones de IE aren 't significativa:

div.class { /* whatever */ } 
* html div.class { /* IE-only */ } 
+0

AFAIK, eliminaron el '* html' de IE8. – bendewey

+0

Aún mejor. Este truco solo es realmente necesario en IEs <= 7 de todos modos. – greyfade

1

yo recomendaría usar algo similar a la solución propuesta por bendewey, pero ir a clases condicionales alrededor de la etiqueta html en su lugar. Por lo que yo sé que esto fue mencionada por primera vez en el blog de Paul irlandesa (http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/)

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]--> 
<!--[if IE 7 ]> <html class="ie7"> <![endif]--> 
<!--[if IE 8 ]> <html class="ie8"> <![endif]--> 
<!--[if IE 9 ]> <html class="ie9"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]--> 

y luego en el css que utilizar:

.box {background: blue;} 
.ie7 .box {background: green;} 

Esto tiene algunas ventajas en comparación con la solución usando un extra div. Para los detalles, consulte la publicación anterior.