2009-10-23 23 views
5

私はUL/LI構造を使用してメニューシステムを作成しています。私はホバー/ショーサブメニューのための兄弟セレクターを使用しようとしています。CSS隣接兄弟セレクタ - IE8の問題

私はこれを使用しています。

#MainMenu li.Sel ul li.HasSub a:hover+ul { 
    display: block; 
} 

UL構造は次のようなものです。

<ul id='MainMenu'> 
    <li class='Sel'> 
    <a href='#'>Click Me</a> 
     <ul> 
      <li class='HasSub'> 
       <a href='#'>Hover Over Me</a> 
       <ul> 
        <li>Link</li> 
        <li>Link</li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

「ホバーオーバーミー」の上にマウスを置くと、兄弟ulが表示されるはずです。 Firefoxではうまく動作しますが、IE8ではまったく動作しません。 IE8で以前に使用された '+'兄弟セレクタを見たことがありますが、どこが間違っていますか?

答えて

9

あなたはIEが標準モードで実行されていることを確認する必要がある - このようなDOCTYPEに入れる:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd"> 

the documentationから:

隣接兄弟コンビネータは「プラス記号」(あります2つの単純なセレクタを区切る+)文字です。空白は重要ではありません。

"E + F"形式のセレクタは、要素木以外のノード(テキストノードやコメントなど)を無視して、ドキュメントツリー内の兄弟要素Eのすぐ後にある要素Fに一致します。要素EとFは同じ親を共有する必要があり、EはFの直前になければなりません。親の最初の子と一致するには、:first-child擬似クラスを使用します。

以降のWindowsのInternet Explorer 7以上が必要です。
コンビネータは、標準準拠モード(厳密!DOCTYPE)でのみ有効になっています。

+0

Hah。面白いのは、doctypeを削除してiframeを表のセルの100%の高さにすることができるということです。 ありがとう、私は100%の高さのものを別々に調べてみなければならないと思います。何か案は? IE6メニューのエフェクトにJSを使用する必要があります。 乾杯。 – Joel

0

それは

#MainMenu li.Sel ul li.HasSub:hover { 
    display: block; 
} 

希望すなわちli要素にホバーを追加し、このhttp://www.xs4all.nl/~peterned/csshover.html

を使用してIE用ホバーを修正する方が簡単だろう

ジョシュ

を支援
関連する問題