仅在IE9上显示下拉菜单的问题

时间:2013-08-27 21:30:06

标签: html css

我有一个完美工作的css下拉/弹出菜单,它只在IE9中有问题。 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的一般指导方针吗?我试过尝试将宽度100%放到li元素/尝试设置显示块/缩放1它在某些情况下对我有效,但不是没有。任何人都可以推荐我从哪里开始?

这是一个复制问题的小提琴代码:

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

1 个答案:

答案 0 :(得分:0)

问题是IE9不支持css转换。

在所有其他浏览器上,当您将鼠标悬停在最近的页面上时,您将有0.3秒(如您的css中所定义)在子菜单消失之前到达子菜单,一旦到达它将不会消失。由于IE9不支持变换,因此在将鼠标悬停在子菜单上之前,基本上只有0秒。

因此,在IE9中修复此问题的唯一方法是让子菜单触及链接最近的页面。

如果您添加#meta_menu&gt; ul&gt; li> ul以下

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

你会看到我在说什么。当然这个代码会混淆子菜单的设计,但你可以通过在UL周围使用容器来实现同样的效果。