Domanda

  • CSS ha @import, giusto?
  • IE6 comprende * selettore html hack, giusto?

È possibile combinarli come

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

o, possibilmente,

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

I buoni browser devono saltare questo, funzionerà ancora in IE6? Come sembra una soluzione? Posso vedere chiaramente che sembra brutto come un normale CSS.

È stato utile?

Soluzione

  

È possibile combinarli come

* html @import url(ie6hacks.css);

No. le regole at come @import non sono selettori, quindi non possono essere combinate con altri selettori.

Esistono modi per far funzionare le regole at come hack, ad esempio:

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

verrà caricato da IE6 / 7 ma non dagli altri browser. Tuttavia, non consiglierei di usarlo; questo genere di cose può essere davvero fragile. Questo esempio particolare è anche CSS non valido.

Come dice Daniel, se vuoi file .css separati per gli hack, l'approccio migliore è un tag di collegamento incluso condizionatamente. Il bello di "* html" è che puoi mettere le regole di hacking nello stesso foglio di stile, che è più facile da gestire se ce ne sono solo alcune; se hai comunque un foglio di stile separato, non offre alcun vantaggio.

IMO “* html” per IE6 è l'unico hack che è ancora legittimo usare oggi. Tutta la roba del modello box è morta insieme a IE5 - supponendo che tu non stia usando la modalità Quirks IE6, cosa che non dovresti - e gli altri browser, persino IE7, sono generalmente troppo buoni per poter attaccare con un semplice hack; i pochi hack che possono colpirli sono troppo complessi / fragili / non validi per essere realmente utilizzati.

(E in qualità di inventore del modello semplificato Hack modello, dico loro un buon sostituto.)

Altri suggerimenti

Perché preoccuparsi di questo stravagante hack quando potresti usare i commenti condizionali per includere solo il CSS che ti serve?

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

Alcune risorse:

Se devi davvero usare @import, puoi approfittare del fatto che IE non segue le specifiche per la regola @import. Normalmente deve essere il primo pensiero in un foglio di stile o tag di stile, oppure è completamente ignorato. Tuttavia, IE6 (almeno quando l'ho testato) non sembra curarsene. Lungo queste linee, puoi farlo:

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

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

Nota che non ho provato questo in nulla oltre a FF3 (dove non riesce a caricare ie-style.css) e IE6 (dove lo carica comunque). Il chilometraggio può variare.

Sfortunatamente l'hack * html non può essere usato per importare altri fogli di stile.

Ecco un articolo che spiega che l'hack e altri che sono utili per attaccare i bug specifici di IE.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top