0

IE9 でのみ問題が発生する完全に機能する css ドロップダウン/ポップオーバー メニューがあります。IE9 の問題は、マウスをホバーすると十分な速度でメニューが機能し、非常に正確でなければならないことです。

これが私のcssです:

#meta_menu > ul > li > ul {
    opacity: 0;
    visibility: hidden;
    padding: 5px 0px 0px 0px;
    background-color: rgb(250,250,250);
    text-align: left;
    position: absolute;
    top: 55px;
    left: 50%;
    margin-left: -90px;
    margin-top: -40px;
    width: 180px;
-webkit-transition: all .3s .1s;
   -moz-transition: all .3s .1s;
     -o-transition: all .3s .1s;
        transition: all .3s .1s;
-webkit-border-radius: 5px;
   -moz-border-radius: 5px;
        border-radius: 5px;
-webkit-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.5);
   -moz-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.5);
        box-shadow: 0 3px 10px rgba(0, 0, 0, 0.5);
        z-index:5000;
}

#meta_menu > ul > li:hover > ul {
    opacity: 1;
    top: 65px;
    visibility: visible;
}

#meta_menu > ul > li > ul:before{
    content: '';
    display: block;
    border-color: rgba(255, 255, 255, 0) rgba(255, 255, 255, 0) #FAFAFA;
    border-style: solid;
    border-width: 10px;
    position: absolute;
    top: -20px;
    left: 50%;
    margin-left: -10px;
}

#meta_menu > ul ul > li { 
position: relative;
margin:0px;
z-index: 1;
}

#meta_menu ul ul a{
    color: rgb(50,50,50);
    font-family: FuturaTT,Georgia,Palatino,Times New Roman,serif;
    font-size: 13px;
    background-color: rgb(250,250,250);
    padding: 5px 8px 7px 16px;
    display: block;
-webkit-transition: background-color .1s;
   -moz-transition: background-color .1s;
     -o-transition: background-color .1s;
        transition: background-color .1s;
    font-family: 'HelveticaNeue-Light','Helvetica Neue Light','Helvetica Neue',Arial,Helvetica,sans-serif;
}

#meta_menu ul ul > li:hover > ul { opacity: 1; left: 196px; visibility: visible;}

#meta_menu ul ul a{
background:none;
}

#meta_menu ul ul a:hover{
   color:#888 !Important;
}

私のHTML:

<div id="meta_menu">
                <ul>
                    <li><a href="#">NOTIFICATIONS <span class="notifications badge">0</span></a></li>
                    <li class="has-sub"><a href="#">RECENT PAGES</a>
                         <ul>
                             <li><a href='#'>Page 1</a></li>
                             <li><a href='#'>Page 2</a></li>
                             <li><a href='#'>Page 3</a></li>
                             <li><a href='#'>Page 4</a></li>
                        </ul>
                    </li>
                    <li class="meta_last"><a href="#" class="tips sign_out">SIGN OUT</a></li>
            </ul>
        </div>

IE でこの種の問題をどのようにトラブルシューティングしますか? IE に固執する一般的なガイドラインはありますか? li 要素に幅 100% を設定しようとしたり、表示ブロック/ズーム 1 を設定しようとしたりしましたが、場合によってはうまくいきませんでした。どこから始めればいいですか?

問題を再現するフィドルコードは次のとおりです。

http://jsfiddle.net/phKsk/2/

4

1 に答える 1

0

問題は、IE9 が CSS トランジションをサポートしていないことです。

他のすべてのブラウザーでは、[最近のページ] にマウスを合わせると、サブメニューが消えるまでに 0.3 秒 (css で定義) の時間があり、サブメニューに到達すると消えることはありません。IE9 は変換をサポートしていないため、サブメニューにマウスを合わせるまでの時間は基本的に 0 秒です。

したがって、IE9 でこれを修正する唯一の方法は、サブメニューを最近のページのリンクに接触させることです。

#meta_menu > ul > li > ul を追加すると、次のようになります

margin-top: -30px;
padding-top: 30px;

あなたは私が話していることを見るでしょう。もちろん、このコードはサブメニューのデザインを混乱させますが、同じ効果を持つ UL の周りにコンテナーを使用することで同じことを達成できます。

于 2013-08-28T20:05:02.693 に答える