我有一个完美工作的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它在某些情况下对我有效,但不是没有。任何人都可以推荐我从哪里开始?
这是一个复制问题的小提琴代码:
答案 0 :(得分:0)
问题是IE9不支持css转换。
在所有其他浏览器上,当您将鼠标悬停在最近的页面上时,您将有0.3秒(如您的css中所定义)在子菜单消失之前到达子菜单,一旦到达它将不会消失。由于IE9不支持变换,因此在将鼠标悬停在子菜单上之前,基本上只有0秒。
因此,在IE9中修复此问题的唯一方法是让子菜单触及链接最近的页面。
如果您添加#meta_menu&gt; ul&gt; li> ul以下
margin-top: -30px; padding-top: 30px;
你会看到我在说什么。当然这个代码会混淆子菜单的设计,但你可以通过在UL周围使用容器来实现同样的效果。