2009-03-05 11 views
5
  • CSS ha @import, giusto?
  • IE6 comprende *html selector mod, giusto?

E 'possibile combinarli comeMetodo CSS per includere gli hack IE6

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

o, eventualmente,

//*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 i normali CSS.

risposta

4

E 'possibile combinare loro come

* html @import url(ie6hacks.css); 

No. at-regole come @import non sono selettori, quindi non può essere combinato con altri selettori.

ci sono modi per rendere al-regole funzionano come hack, ad esempio questo:

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

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

Come dice Daniel, se si desidera separare i file .css per gli hack, l'approccio migliore è un tag link condizionato. Il bello di "* html" è che puoi mettere le hack-rules 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 trucco che è ancora valido utilizzare oggi. Tutto il materiale del modello di box è morto insieme a IE5 - supponendo che tu non stia usando IE6 Quirks Mode, che non dovresti - e gli altri browser, anche IE7, sono generalmente troppo buoni per essere in grado di attaccare con un semplice hack; i pochi hack che possono bersagliarli sono troppo complessi/fragili/non validi per essere realmente utilizzati.

(E come l'inventore del semplificato Box Model Hack, dico una sostanziosa buona liberazione per loro.)

+0

Hahaha, è un trucco carino, anche se ogni volta che imparo un nuovo trucco IE sento che il mio cervello si espande con la conoscenza e si contrae nel dolore allo stesso tempo. –

3

Sfortunatamente la modifica *html non può essere utilizzata per importare altri fogli di stile.

Here is an article che spiega che hack e altri che sono utili per attaccare i bug specifici di IE.

+0

Grazie per una risposta chiara. Purtroppo oggi ho perso i voti :) – temoto

12

Perché preoccuparsi di questo strano trucco quando è possibile utilizzare i commenti condizionali per includere solo il CSS necessario?

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

Alcune risorse:

Se davvero si deve usare @import, si possono trarre vantaggio dal fatto che IE non segue le specifiche per la regola @import. Normalmente deve essere il primo a pensare in un foglio di stile o in un tag di stile, oppure è completamente ignorato. Tuttavia, IE6 (almeno quando l'ho testato) non sembra preoccuparsene. Lungo queste linee, si può fare questo:

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

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

Si noti che non ho ancora testato questo in qualcosa oltre FF3 (dove non riesce a caricare IE-style.css) e IE6 (dove lo carica in ogni modo). Il tuo chilometraggio può variare.

+0

Lo so, grazie. Perché? Perché pensavo che sarebbe stato intelligente e piacevole mantenere gli hack CSS all'interno dei CSS. – temoto

+0

Questa è la strada da percorrere se tutti i css specifici per ie6 si trovano in un file separato. Se hai pochissimi css specifici per es. 6, potresti usare il underscore-hack, ad es. _width viene interpretato come larghezza per ie6 (ma non per ie7), che non verrà convalidato però .. – svinto

+0

I commenti condizionali non sono un hack oltre a sfruttare il set di funzioni estese di un browser. Gli hack dei selettori sicuramente lo sono. –