IE6ハックを含めるCSSメソッド
-
03-07-2019 - |
質問
- CSSには@importがありますか?
- IE6は
* htmlセレクター
のハックを理解しますか?
次のように組み合わせることは可能ですか
//*html @import url(ie6hacks.css);
または、場合によっては
//*html { @import url(ie6hacks.css); }
?
優れたブラウザはこれをスキップする必要がありますが、IE6でも動作しますか?ソリューションとしてどのように見えますか?通常のCSSのようにいように見えます。
解決
次のように組み合わせることは可能ですか
* html @import url(ie6hacks.css);
いいえ。 @importのようなat-ruleはセレクタではないため、他のセレクタと組み合わせることはできません。
アットルールをハックとして機能させる方法があります。例:
@import url(/* no! */iehacks.css);
はIE6 / 7によって読み込まれますが、他のブラウザでは読み込まれません。ただし、使用することはお勧めしません。この種のものは本当に壊れやすいものです。この特定の例も無効なCSSです。
ダニエルが言うように、ハック用に個別の.cssファイルが必要な場合、最良のアプローチは条件付きでリンクタグを含めることです。 “ * html”の美しさハックルールを同じスタイルシートに入れることができるということです。これは、少数のハックルールがあれば管理しやすくなります。とにかく別のスタイルシートを使用している場合、利点はありません。
IMO“ * html” IE6が唯一のハックであり、今日でもまだ使用することが合法です。すべてのボックスモデルはIE5と共に死んでいますブラウザは、IE7でさえ、一般的にはあまりにも優れているため、単純なハックで攻撃することはできません。それらを標的にすることができるいくつかのハックは、複雑すぎて壊れやすく、実際に使用するには無効です。
(Simplified Box Model Hackの発明者として、私は彼らに心からの良い気取りを言います。)
他のヒント
条件付きコメントを使用して必要なCSSだけを含めることができるのに、なぜその奇抜なハックに悩まされるのですか?
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->
一部のリソース:
@importを本当に使用する必要がある場合は、IEが@importルールの仕様に従っていないという事実を利用できます。通常、スタイルシートまたはスタイルタグで最初に考える必要があります。そうでない場合は完全に無視されます。ただし、IE6(少なくとも私がテストしたとき)は気にしません。これらの線に沿って、これを行うことができます:
<style type="text/css">
.NotARealClass { }
@import url("ie-style.css");
</style>
FF3(ie-style.cssのロードに失敗する場所)およびIE6(とにかくロードする場所)以外ではテストしていません。走行距離は異なる場合があります。
残念ながら、 * html
ハックを使用して他のスタイルシートをインポートすることはできません。
ハッキングなどを説明する記事 IE固有のバグを攻撃するのに役立ちます。