2011-01-20 13 views
0

IEに間違ったCSSドロップダウンメニューが表示される問題があります。他のブラウザでは、それは必要なように動作します。IE Cssドロップダウンメニューの問題

<body> 
<div id="container"> 
    <header>   
     <div id="hlogo"> 
      <a href="index.html">title</a> 
     </div> 
     <nav id="hmenu"> 
      <ul> 
       <li> 
        <a href="menu1.html">menu1</a> 
       </li> 
       <li> 
        <a href ="menu2.html">menu2</a> 
        <div id="items" class="hiddenMenu"> 
         <a href="submenu1.html">submenu1</a> 
         <a href="submenu2.html">submenu2</a> 
         <a href="submenu3.html">submenu3</a> 
         <a href="submenu4.html">submenu4</a> 
        </div> 
       </li> 
       <li> 
        <a href ="menu3.html">menu3</a> 
       </li> 
       <li> 
        <a href ="menu4.html">menu4</a> 
       </li> 
      </ul> 
      </nav> 
    </header> 

    <section id="container-body"> 
     <div id="content"> 



     </div> 
    </section> 
</div> 

だからこれは私の完全なHTMLです。それは以下のCSSによって提供されるレイアウトを持っています。

/* layout styles */ 
*{margin:0;padding:0;font-family:Arial;} 
header{overflow:hidden;} 
body{background-color:#cc3333;} 
a {display: inline-block;font-weight: bold;text-decoration:none;} 

footer { 
    display:block; 
    position:relative; 
    width:100%; 
} 
footer > #disclamer { 

    margin-left: auto; 
    margin-right: auto; 
    width: 200px; 
    padding-bottom:5px; 
    font-size:small; 
    font-weight: bold; 
} 
#container{ 
    background-color:#ffffff; 
    margin:auto; 
    min-width:756px; 
    width:60%; 
    overflow:hidden; 
    border:solid 2px #666666; 
    margin-top:10px; 
    margin-bottom:10px; 
    box-shadow:0 1px 3px rgba(0,0,0,0.6); 
} 

#hlogo {float:left;height:105px;width:181px;padding:10px;} 
#hlogo a{background-position: 0px 0px;float:left;display:inline;height:105px;text-indent:-999999em;width:181px;} 
#hlogo a{background-image:url('../images/logo.png');background-repeat:no-repeat;overflow:hidden;} 

#hmenu{margin-top:45px;padding:10px;} 

nav { 
    list-style:none; 
    display:inline; 
    float:right; 
} 
nav ul{ 
    list-style: none; 
    text-align:center; 
    background-color:#666666; 
    float:left; 

} 
nav ul li { 
    width:128px; 
    float:left; 
    display:inline-block; 
} 
nav ul li:hover{ 
    background-color:#cc3333; 
    cursor:pointer; 
} 
nav ul li a { 
    color:#ffffff; 
    padding:10px; 
} 

nav ul { 
    background: #222 url('../images/overlay.png') repeat-x; 
    color: #fff; 
    text-shadow: 0 -1px 1px rgba(0,0,0,0.25); 
    cursor: pointer 
} 

section {margin:10px;} 

#container > header {display:block;} 

#container-body { 
    background-color:#ececec; 
    height:600px; 
    display:block; 
    overflow:auto; 
} 

#container-body > #content { 
    margin: 10px; 
    height:95%; 
    position:relative; 
} 
    .hiddenMenu 
{ 
    position:absolute; 
    z-index: 150; 
    background: #222 url('../images/overlay.png') repeat-x; 
    color: #fff; 
    text-shadow: 0 -1px 1px rgba(0,0,0,0.25); 
    cursor: pointer; 
    width: inherit; 
} 
.hiddenMenu > a 
{ 
    position:relative; 
    text-align: left; 
    clear:both; 
    font-size:0.75em; 
} 


nav li .hiddenMenu > a 
{ 
    display:none; 
} 
/*nav li:hover .hiddenMenu > a 
{ 
    display:block; 
}*/ 

nav li .hiddenMenu > a:hover 
{ 
    background-color:#cc3333; 
    cursor:pointer; 
    border: 1px black solid; 
} 

これは完全なCSSです。

これは私が使用しているCSSです。今はFirefoxでそれは必要なように動作します。メニューは、メニュー2の項目をホバーすると表示されます。 IEでは、最初のサブメニュー項目(submenu1)を表示し、それをクリアしてクリックすることもできません。

私が間違っていることを見ることができないので、あなたが私を助けることができればそれは感謝します。ありがとう!

編集:追加コード。

ヘッダータグにoverflow:hidden属性があります。それを目に見えるように設定すれば、完全なメニューが表示されますが、私のレイアウトは完全に混乱します。周囲に道があるのですか、何か間違っていますか?

また、メニューの表示をnone/blockに設定するためのjqueryスクリプトがありますが、IEではサブメニュー項目にカーソルを合わせるとメニューが隠されます。なぜこれが起こるのですか?

+1

李:私はそれはメニューを示していた項目にカーソルを合わせるとホバーはおそらく –

+0

動作しませんので、私は私が選んだいくつかのJavaScriptを使用して、すでにその問題を修正しているが – Alka

答えて

3

私の経験では、絶対位置指定オブジェクトの位置を設定しないとIEが少しバグを起こします。たとえば上のように:0と左:0

編集: また、絶対配置オブジェクトの親は、position:relative;ポジションが親ディメンションを開始点として使用する必要がある場合。

Edit2: li:ホバーがIE6で動作しないと思います。 IE7について覚えていない。そのうちの1つは:ホバーしか受け入れず、以下のブラウザーはおそらくそれらのどれでもありません。しかし、jQueryはそれを解決します。

EDIT3: 私はNAVのものがあるかわからないが、私はそれが後に関連のある場合ので、私は知らないHTML5に跳ね上がっていません。しかし、とにかく私はあなたのコードの作品を​​作った。

スクリプト(jqueryの):

$(document).ready(function() { $('#hmenu ul li').hover( function() { $(this).children('div').css('display','block'); }, function() { $(this).children('div').css('display','none'); }); }); 

CSS:

#hmenu { list-style:none; display:inline; float:right;} #hmenu ul{ list-style: none; text-align:center; background-color:#666666; float:left;} #hmenu ul li { width:128px; float:left; position: relative; display:inline-block;} #hmenu ul li:hover{ background-color:#cc3333; cursor:pointer;}#hmenu ul li a { color:#ffffff; padding:10px;} #hmenu ul { background: #222 url('../images/overlay.png') repeat-x; color: #fff; text-shadow: 0 -1px 1px rgba(0,0,0,0.25); cursor: pointer } .hiddenMenu { display: none; position:absolute; top: 60; left: 0; z-index: 150; background: #222 url('../images/overlay.png') repeat-x; color: #fff; text-shadow: 0 -1px 1px rgba(0,0,0,0.25); cursor: pointer; width: inherit;} 

(書式設定のため申し訳ありませんが、これに新たなビットがありますが、私は推測するあなたのエディタで書式設定のソースを適用することができ、私は変わりました。 navがIDを持っているようにし、HTML navをdivに変更しました。それだけです。

HTML:

<div id="hmenu"> <ul> <li> <a href="menu1.html">menu1</a> </li> <li> <a href ="menu2.html">menu2</a>  <div id="items" class="hiddenMenu"> <a href="submenu1.html">submenu1</a> <a href="submenu2.html">submenu2</a> <a href="submenu3.html">submenu3</a> <a href="submenu4.html">submenu4</a> </div> </li><li> <a href ="menu3.html">menu3</a> </li> <li> <a href ="menu4.html">menu4</a> </li></ul> </div> 
+0

ありがとう、私はそれを調べます。 – Alka

+0

私はそれを試みたが、うまくいかなかった。 OPに追加情報が追加されました。 – Alka

+0

ありがとう!出来た!私はIEがhtml5の準備ができているとは思わない。 – Alka

1

あなたはのdivNAV変更と命名したタグを持っているし、再試行してくださいすることはできません。

+0

に取り組んでいると思いますどこかにアップ - Googleを介してそこに着いた、サイトの名前を覚えていないことができます。 – Alka

+0

はい、できます! (ハックで) –

+0

@ŠimeVidas - しかし、それは良い習慣と考えていますか? –

関連する問題