2009-03-05 6 views
5
  • CSS hat @ Import, richtig?
  • IE6 versteht *html selector hack, richtig?

Ist es möglich, kombinieren sie wieCSS-Methode, um IE6 Hacks

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

oder möglicherweise

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

?

Gute Browser müssen dies überspringen, wird es in IE6 noch funktionieren? Wie sieht es als Lösung aus? Ich kann deutlich sehen, dass es hässlich aussieht wie normales CSS.

Antwort

4

Ist es möglich, sie zu kombinieren wie

* html @import url(ie6hacks.css); 

Nr at-Regeln wie @import sind nicht Selektoren, so kann nicht mit anderen Selektoren kombiniert werden.

Es gibt Möglichkeiten, at-Regeln als Hacks arbeiten zu machen, zum Beispiel dieses:

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

wird von IE6/7, aber nicht den anderen Browsern geladen werden. Allerdings würde ich es nicht empfehlen; so etwas kann sehr fragil sein. Dieses spezielle Beispiel ist auch ein ungültiges CSS.

Wie Daniel sagt, wenn Sie separate .css-Dateien für Hacks wollen, ist der beste Ansatz ein bedingt enthaltener Link-Tag. Das Schöne an "* html" ist, dass Sie Hack-Regeln in dasselbe Stylesheet einfügen können, das einfacher zu verwalten ist, wenn es nur ein paar davon gibt; Wenn Sie ohnehin ein eigenes Stylesheet haben, bietet es keinen Vorteil.

IMO "* html" für IE6 ist der einzige Hack, der heute noch legitim ist. Alle Box-Model-Sachen sind zusammen mit IE5 tot - vorausgesetzt, du verwendest den IE6-Quirks-Modus nicht, was du nicht tun solltest - und die anderen Browser, sogar IE7, sind im Allgemeinen zu gut, um mit einem einfachen Hack angreifen zu können; Die paar Hacks, die sie anvisieren können, sind zu komplex/zerbrechlich/ungültig, um wirklich benutzt zu werden.

(Und als Erfinder des vereinfachten Box Model Hack, sage ich ein herzliches riddance zu ihnen.)

+0

Hahaha, das ist ein netter Trick, aber jedes Mal, wenn ich einen neuen IE-Hack lerne, fühle ich, dass mein Gehirn sich mit Wissen erweitert und gleichzeitig Schmerzen hat. –

3

Leider kann der Hack *html nicht zum Importieren anderer Stylesheets verwendet werden.

Here is an article zu erklären, dass Hack und andere, die zum Angriff auf IE-spezifische Fehler nützlich sind.

+0

Sie für klare Antwort danken. Leider habe ich heute keine Stimmen mehr :) – temoto

12

Warum sollten Sie sich mit diesem verrückten Hack beschäftigen, wenn Sie konditionale Kommentare verwenden könnten, um genau das CSS einzufügen, das Sie brauchen?

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

Einige Ressourcen:

Wenn Sie wirklich verwenden @import müssen Sie sich die Tatsache zunutze, dass der IE nicht folgen Spezifikationen nehmen kann die @ import Regel. Normalerweise muss es das erste Think in einem Stylesheet oder Style-Tag sein, oder es wird komplett ignoriert. Allerdings scheint IE6 (zumindest wenn ich es getestet habe) nicht zu kümmern. Entlang dieser Linien, können Sie dies tun:

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

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

Bitte beachte, dass ich dies neben FF3 in etwas nicht getestet und IE6 (wo es ie-style.css nicht geladen werden kann) (wo es lädt es sowieso). Ihre Laufleistung kann variieren.

+0

Ich weiß das, danke. Warum? Weil ich dachte, dass es schlau und nett wäre, CSS-Hacks in CSS zu behalten. – temoto

+0

Dies ist der Weg zu gehen, wenn alle ie6-spezifische CSS in einer separaten Datei ist. Wenn Sie sehr wenig ie6-spezifische CSS haben, könnten Sie den Unterstrich-Hack verwenden, z. _width wird von ie6 (aber nicht ie7) als Breite interpretiert, was aber nicht bestätigt wird. – svinto

+0

Bedingte Kommentare sind kein Hack, sondern nutzen die erweiterten Funktionen eines Browsers. Selector Hacks sind sicherlich. –