2010-12-10 9 views
2

IE6は>で直接子孫選択をサポートしていないことはよく知られていますが、私が最近見つけたのはカンマで区切られた複数の選択ルールがある場合、>があればすべて無視します。ここで'>'に遭遇したときにIE6を正常に動作させる方法はありますか?

は、私は、問題をテストするために使用されるコードの一部です:

<body> 
    <style> 
     .one, .two{ 
      width: 100px; 
      height: 100px; 
      background-color: #FFCCAA; 
     } 
     body .two, body > .one{ 
      background-color: #CCFFAA; 
     } 
    </style> 
    <div class="one"></div> 
    <div class="two"></div>  
</body> 

あなたがAAA, BBBを書くとき、あなたが実際に定義していないので、私はこれは動作が期待されていること(ドキュメントを読んでいない)と仮定します2つのセレクタがありますが、2つのセレクタは1つです。

まだ私は尋ねる必要があります...私のCSSルールを2回書くことを暗示していない解決策はありますか?

は、

アリンP.S.をありがとうJavaScriptを使用することはできません。

+1

次の2つの別々のセレクタを定義しませんが、しかし、グループ一緒にカンマを使用することで、それが一つのルールと考えられています。スペックでは、認識できないセレクタでは、* rule *全体が無視されます。実際、IE6は期待どおりにうまく機能していません。唯一の本当の解決策はセレクタを自分のルールに分けることです:/ – BoltClock

答えて

1

あなたが遭遇した動作はstandard CSS error recoveryの一部なので、IE6は正しく動作しています(CSS2をサポートしていないブラウザの場合)。あなたはルールを複製、別途CSS2のセレクタを使用する必要が

<style> 
    body .two { 
     background-color: #CCFFAA; 
    } 
    body > .one { 
     background-color: #CCFFAA; 
    } 
</style> 
+0

私が恐れていたように、これは正しい答えでなければなりません。これを確認する公式文書へのリンクを広告することができれば助かります。 –

1

申し訳ありませんが、私はJavascriptを使用しないとこれが可能ではないと思います。

JSのハック(Dean Edwards IE7)がありますが、JSがないと、IE6はサポートしていないため、使用できません。

JSを使用しないのいずれかを準備していれば、IEのレンダリングエンジンを完全に置き換えてChromeエンジンに代わるGoogle Frameプラグインを検討することができます。しかし、それはJavascriptがやることのないものよりもはるかに大きなハックですので、あなたはそれをやりたいとは思わないでしょう。

率直に言えば、最良の選択肢は、IE6のサポートを中止することです。しかし、私はそれがオプションではないかもしれないことを感謝します。

IE6をサポートする必要がある場合は、クラスやIDをすべてのものに置き、最も基本的なCSSセレクタ以外のものを使用することを忘れてしまいます。

申し訳ありません。

+1

私は、ページを最新のブラウザに見せかける傾向があり、IE6ら、つまりメインコンテンツが表示され、ナビゲーションが表示され、クリック可能になります。 –

+0

入力いただきありがとうございますが、私が言ったように、私はJS(私はすでにie7.jsについて知っていました)を使いたくありません。 CSSを複製することは、現時点でJSより優れたソリューションです。 @ネイサン私は単純なウェブサイトを構築しようとはしていない。そのような場合は、問題を回避するためにクラスとIDを追加しました。 –

関連する問題