带有水平子菜单的纯 html css 菜单。悬停在 IE 中无法正常工作

Posted

技术标签:

【中文标题】带有水平子菜单的纯 html css 菜单。悬停在 IE 中无法正常工作【英文标题】:Pure html css menu with horizontal submenu. Hover not working properly in IE 【发布时间】:2013-04-27 18:14:45 【问题描述】:

我正在处理带有水平子菜单的纯 html/css 菜单,但悬停在 Internet Explorer 中无法正常工作。当您将鼠标悬停在子菜单上时,它会消失... 在 Chrome 和 Firefox 中一切正常。

这是一个 jfiddle:

http://jsfiddle.net/te5AU/2/

这里是代码:

<div class="wrapper">
    <div class="menu-holder">
        <ul class="menu">
            <li><a href="#">item 1</a>
            </li>
            <li class="active"><a class="test" href="#">This is the one</a>

                <ul class="submenu">
                    <li><a href="#">Submenu item 1</a>
                    </li>
                    <li><a href="#">Submenu item 2</a>
                    </li>
                </ul>
            </li>
            <li><a href="#">menu item 3</a>
            </li>
            <li><a href="#">menu item 4</a>
            </li>
        </ul>
    </div>
    <!-- menu-holder end -->
</div>

这是css:

 .wrapper 
     width:500px;
     height:500px;
     background:grey;
 
 .menu-holder ul 
     margin: 2px 0 0px 25px;
     padding: 0;
     list-style-type: none;
 
 .menu-holder ul li 
     position: relative;
     float: left;
     padding: 0px 10px 0 10px;
     margin: 0px 0px 100px 0px;
     border-left: 1px dotted white;
     line-height: 0px;
 
 .menu-holder ul li:hover > a 
     background-color: #025179;
 
 .menu-holder ul li:hover ul 
     display: block;
 
 .menu-holder ul li a 
     font-family: arial, sans-serif;
     font-size: 12px;
     font-weight: bold;
     display: block;
     color: white;
     text-decoration: none;
     padding: 15px 10px 15px 10px;
     -webkit-border-radius: 5px 5px 0px 0px;
     border-radius: 5px 5px 0px 0px;
 
 .menu-holder ul li ul 
     float: none;
     display: none;
     position: absolute;
     top: 40px;
     left: 0px;
     margin: -1px 0 0px 10px;
     padding: 5px 10px 5px 10px;
     white-space: nowrap;
 
 .menu-holder ul li ul:hover 
     display: block;
 
 .menu-holder ul li ul li 
     position: static;
     float: none;
     display: inline;
     padding: 5px 10px 5px 10px;
     margin: 0px 0px 0px -10px;
     background-color: #025179;
 
 .menu-holder ul li ul li a 
     display: inline;
     margin: 0 0px 0 0px;
     padding: 0px 10px 0px 10px;
     font-weight: normal;
     -webkit-border-radius: 0;
     border-radius: 0;
 
 .menu-holder ul li ul li:first-of-type 
     -webkit-border-radius: 0px 0px 0px 5px;
     border-radius: 0px 0px 0px 5px;
 
 .menu-holder ul li ul li:last-of-type 
     -webkit-border-radius: 0px 5px 5px 0px;
     border-radius: 0px 5px 5px 0px;
 
 .menu-holder ul li:first-of-type 
     border-left: none;
 

【问题讨论】:

IE 有哪些版本? 在 IE9、8 和 7 上测试(使用你的小提琴),无法重现你描述的问题(尽管它确实有其他问题) 这很奇怪,在 IE10、9 和 8 上无法正常工作……这怎么可能? 【参考方案1】:

li 在 IE 中没有得到适当的高度。你应该删除

.menu-holder ul li  line-height: 0 //remove the css line-height: 0;

然后尝试。

试试这个: http://jsfiddle.net/te5AU/4/

【讨论】:

是的!谢谢。就是这样:) 你是怎么这么快找到解决方案的? :) 什么都不是很快,我只是尝试了正常调试来检查li是否有高度。很高兴我能对你有所帮助。 :)【参考方案2】:

嗨,我有一些 changing 在你里面 css

   .menu-holder > ul > li:hover > a 
         background-color: #025179;
     


     .menu-holder ul li ul 
         float: none;
         display: none;
         position: absolute;
    margin:0;     top: 30px;padding:0;
         left: 10;
         white-space: nowrap;font-size:0;
     

     .menu-holder ul li ul li 
         position: static;
         float: none;
         display: inline-block;
         padding:0;
         margin:0px;font-size:14px;
         background-color: #025179;
     
     .menu-holder ul li ul li a 
         display:block;
         margin: 0 0px 0 0px;
         padding: 0 10px;
        line-height:30px;
         font-weight: normal;
         -webkit-border-radius: 0;
         border-radius: 0;
     

Demo

【讨论】:

以上是关于带有水平子菜单的纯 html css 菜单。悬停在 IE 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

带有悬停子菜单的固定菜单有点关闭

将自定义 CSS 导航栏从水平转换为垂直

悬停在子菜单上后保持父菜单项突出显示(HTML/CSS/Jquery)

自定义具有多个条件的纯CSS响应菜单

带有填充的 Tailwind CSS 导航悬停下拉菜单

在导航引导解释中隐藏子菜单