Pergunta

  • CSS tem @import, certo?
  • IE6 entende *html selector corte, certo?

É possível combiná-los como

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

ou, possivelmente,

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

?

Os bons navegadores devem ignorar este, será que ainda funciona no IE6? Como ele se parece como uma solução? Eu posso ver claramente que olha feio como CSS normal.

Foi útil?

Solução

É possível combiná-los como

* html @import url(ie6hacks.css);

No. at-regras como @import não são seletores, por isso não pode ser combinado com outros seletores.

Existem maneiras de tornar o trabalho at-regras como hacks, por exemplo, esta:

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

será carregado pelo IE6 / 7, mas não os outros navegadores. No entanto, eu não recomendo usá-lo; esse tipo de coisa pode ser muito frágil. Este exemplo particular é também CSS inválido.

Como Daniel diz, se você quiser arquivos .css separados para hacks, a melhor abordagem é uma tag link condicionalmente incluído. A beleza de “* html” é que você pode colocar Hack-regras no mesmo estilo, que é mais fácil de gerir, se houver apenas alguns deles; se você está tendo uma folha de estilo separada de qualquer maneira, ele não oferece nenhuma vantagem.

IMO “* html” para o IE6 é o único cortá-lo ainda é legítimo usar hoje. Todo o material do modelo de caixa está morto juntamente com IE5 - supondo que você não está usando o IE6 Quirks Mode, que você não deveria - e os outros navegadores, mesmo IE7, são geralmente demasiado bom para ser capaz de atacar com um hack simples; os poucos hacks que podem orientá-las são demasiado complexas / frágil / inválido para realmente usar.

(E como o inventor da simplificado Box Model Hack, eu digo um caloroso bom alívio para eles.)

Outras dicas

Por que se preocupar com isso truque maluco quando você poderia usar comentários condicionais para incluir apenas o CSS que você precisa?

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

Alguns recursos:

Se você realmente deve usar @import, você pode tirar vantagem do fato de que o IE não segue especificações para a regra @import. Normalmente ele deve ser o primeiro pensar em uma folha de estilo ou estilo tag, ou é completamente ignorado. No entanto, o IE6 (pelo menos quando eu testei) não parece cuidado. Ao longo destas linhas, você pode fazer isso:

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

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

Note que eu não testei isso em nada além FF3 (onde ele falha ao carregar ou seja,-style.css) e IE6 (onde ele carrega-lo de qualquer maneira). Sua milhagem pode variar.

Infelizmente o hack *html não pode ser usado para importar outras folhas de estilo.

Aqui está um artigo explicando que hack and outros que são úteis para atacar erros específicos do IE.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top