Pregunta

  • CSS tiene @import, ¿verdad?
  • IE6 entiende * html selector piratear, ¿verdad?

¿Es posible combinarlos como

//*html @import url(ie6hacks.css);

o, posiblemente,

//*html { @import url(ie6hacks.css); }

?

Los buenos navegadores deben omitir esto, ¿seguirá funcionando en IE6? ¿Cómo se ve como una solución? Puedo ver claramente que se ve feo como CSS normal.

¿Fue útil?

Solución

  

¿Es posible combinarlos como

* html @import url(ie6hacks.css);

No. las reglas at como @import no son selectores, por lo que no se pueden combinar con otros selectores.

Hay formas de hacer que las reglas funcionen como hacks, por ejemplo:

@import url(/* no! */iehacks.css);

será cargado por IE6 / 7 pero no por los otros navegadores. Sin embargo, no recomendaría usarlo; Este tipo de cosas puede ser realmente frágil. Este ejemplo particular también es CSS no válido.

Como dice Daniel, si desea archivos .css separados para hacks, el mejor enfoque es una etiqueta de enlace incluida condicionalmente. La belleza de & # 8220; * html & # 8221; es que puedes poner reglas de pirateo en la misma hoja de estilo, lo cual es más fácil de administrar si solo hay unas pocas; si de todos modos tiene una hoja de estilo separada, no ofrece ninguna ventaja.

IMO & # 8220; * html & # 8221; para IE6 es el único truco que todavía es legítimo usar hoy. Todas las cosas del modelo de caja están muertas junto con IE5 & # 8201; & # 8212; & # 8201; asumiendo que no está usando el Modo IE6 Quirks, que no debe & # 8201; & # 8212; & # 8201; y el otro los navegadores, incluso IE7, generalmente son demasiado buenos para poder atacar con un simple hack; los pocos hacks que pueden atacarlos son demasiado complejos / frágiles / inválidos para usar realmente.

(Y como inventor del Simplified Box Model Hack, les digo una buena y sincera despedida)

Otros consejos

¿Por qué molestarse con ese truco loco cuando podría usar comentarios condicionales para incluir solo el CSS que necesita?

<!--[if IE 6]>
    <link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->

Algunos recursos:

Si realmente debe usar @import, puede aprovechar el hecho de que IE no sigue las especificaciones de la regla @import. Normalmente debe ser el primer pensamiento en una hoja de estilo o etiqueta de estilo, o se ignora por completo. Sin embargo, a IE6 (al menos cuando lo probé) no parece importarle. En ese sentido, puede hacer esto:

<style type="text/css">
.NotARealClass { }

@import url("ie-style.css");
</style>

Tenga en cuenta que no he probado esto en otra cosa que no sea FF3 (donde no puede cargar ie-style.css) e IE6 (donde lo carga de todos modos). Su kilometraje puede variar.

Lamentablemente, el pirateo * html no se puede utilizar para importar otras hojas de estilo.

Aquí hay un artículo que explica ese pirateo y otros que son útiles para atacar errores específicos de IE.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top