0

我有一个完美的 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/

4

1 回答 1

0

问题是 IE9 不支持 css 转换。

在所有其他浏览器上,当您将鼠标悬停在 RECENT PAGES 上时,您将有 0.3 秒(在您的 css 中定义)在子菜单消失之前到达子菜单,并且一旦到达它就不会消失。由于 IE9 不支持转换,因此您基本上有 0 秒的时间,直到您将鼠标悬停在子菜单上。

因此,在 IE9 中解决此问题的唯一方法是让子菜单触摸链接 RECENT PAGES。

如果您在#meta_menu > ul > li > ul 中添加以下内容

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

你会看到我在说什么。当然,这段代码会弄乱子菜单的设计,但您可以通过在 UL 周围使用具有相同效果的容器来完成相同的操作。

于 2013-08-28T20:05:02.693 回答