2009-03-05 12 views
5
  • CSS tiene @import, ¿verdad?
  • IE6 entiende *html selector hack, ¿verdad?

¿Es posible combinarlos comoMétodo CSS para incluir hacks IE6

//*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.

Respuesta

4

¿Es posible combinarlos como

* html @import url(ie6hacks.css); 

No. AT-reglas como @import no son selectores, así que no se puede combinar con otros selectores.

Hay maneras de hacer al-reglas funcionan como cortes, por ejemplo esto:

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

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

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

OMI “* html” para IE6 es la única entrar ilegalmente en él todavía es legítimo usar hoy. Toda la materia modelo de caja está muerto, junto con IE5 - suponiendo que no se esté usando IE6 modo no estándar, que no debería - y los otros navegadores, incluso Internet Explorer 7, son generalmente demasiado bueno para ser capaz de atacar con un simple truco; los pocos hacks que pueden atacarlos son demasiado complejos/frágiles/inválidos para usarlos realmente.

(Y como el inventor de la caja Modelo simplificado Hack, digo una buena liberación abundante para ellos.)

+0

Jajaja, eso es un buen truco, aunque cada vez que aprender un nuevo truco IE siento que mi cerebro se expanden con el conocimiento y el contrato de dolor al mismo tiempo. –

3

Desafortunadamente, el truco *html no se puede utilizar para importar otras hojas de estilo.

Here is an article explicando ese truco y otros que son útiles para atacar errores específicos de IE.

+0

Gracias por una respuesta clara. Desafortunadamente hoy no tengo votos :) – temoto

12

¿Por qué molestarse con ese hack 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 tiene que usar @ importación, que puede tomar ventaja del hecho de que el IE no sigue las especificaciones para la regla @import. Normalmente debe ser el primero en pensar en una etiqueta de hoja de estilo o estilo, o se ignora por completo. Sin embargo, IE6 (al menos cuando lo probé) no parece importarle. En ese sentido, se puede hacer esto:

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

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

Tenga en cuenta que no he probado esto en nada, además de FF3 (donde no se puede cargar es decir-style.css) e IE6 (donde se carga de todos modos). Su experiencia puede ser diferente.

+0

Lo sé, gracias. ¿Por qué? Porque pensé que sería inteligente y agradable mantener CSS pirateados dentro de CSS. – temoto

+0

Este es el camino a seguir si todos sus IE6 específicas de CSS se encuentra en un archivo separado. Si tiene muy poco css específico de ie6, podría usar el guión bajo, por ejemplo. _width se interpreta como la anchura de IE6 (pero no IE7), que no se validan aunque .. – svinto

+0

comentarios condicionales no son un truco tanto como tomar ventaja de conjunto de características extendidas de un navegador. Los hackers de Selector son ciertamente. –

Cuestiones relacionadas