【问题标题】:Ie7 dropdown menu hover over issueie7下拉菜单悬停在问题上
【发布时间】:2012-12-12 12:15:41
【问题描述】:

在 ie7! 中遇到问题,请参阅下图了解下拉菜单的外观。这在其他所有浏览器中都可以正常工作,但在 ie7 中,一旦您冒险离开主要的 li '即:顶部链接',菜单就会消失。我已经检查了在所有内容周围设置红色框,并且 li 元素正确扩展以包含子菜单,但我无法修复它。有什么想法吗?

标记示例:

<nav>    
  <ul class="clearfix">    
    <li class="dropdown-link"><a href="#" class="main-link">Top Link</a>
      <ul class="clearfix dropdown-holder">
        <li>    
          <div class="arrow"></div>
          <div class="dropdown-holder-inner">
             <ul class="dropdown">
               <li><a href="#">Link</a></li>
               <li><a href="#">Link</a></li>
               <li><a href="#">Linky</a></li>
               <li><a href="#">Link</a></li>
               <li><a href="#">Link</a></li>
               <li class="last-child"><a href="#">Link</a></li>
             </ul>
           </div>
         </li>                            
      </ul>
     </li>
    </ul>
</nav>​

CSS 很重,所以我在 jsfiddle 上放了完整代码:http://jsfiddle.net/n2kgX/3/

图片:http://i.stack.imgur.com/k24Du.png

【问题讨论】:

  • 您是否在页面中包含 HTML5 元素 shim 以覆盖 IE 中的 &lt;nav&gt; 元素?完成后,我看起来没问题,@ 987654323@。 (如果您已经这样做了,不想将其发布为答案)
  • alreading using modernizer yes!
  • 你能具体说明为什么 jho1086 的答案不值得作为正确答案吗?

标签: css drop-down-menu internet-explorer-7


【解决方案1】:

我在这里创建了一个示例:http://jsfiddle.net/jho1086/bbULV/5/,我稍微更改了 html 代码和 css,因为在我看来容器太多了。我更改了 HTML5 标记 (&lt;nav&gt;),因为 HTML5 不支持 IE8 及更低版本,除非您有固定的。

<div id="nav">      
    <ul class="clearfix sf-menu">      
        <li class="dropdown-link"><a href="#" class="main-link">Top Link</a>  
            <div class="clearfix dropdown-holder">  
                <div class="arrow"></div>  
                <ul class="dropdown clearfix">  
                    <li><a href="#">Link</a></li>  
                    <li><a href="#">Link</a></li>  
                    <li><a href="#">Linky</a></li>  
                    <li><a href="#">Link</a></li>  
                    <li><a href="#">Link</a></li>  
                    <li class="last-child"><a href="#">Link</a></li>  
                </ul>    
            </div>    
        </li>  
    </ul>  
</div>

css

#nav { background:#6B6C6E; width:300px; margin:30px auto 0;}
.sf-menu li{float:left; font:12px/1em 'arial'; position:relative; padding:0 0 5px;}
.sf-menu li a{float:left;padding:12px 10px 5px;color:#fff; text-transform:uppercase;}
.sf-menu .dropdown-holder{
    position:absolute;
    left:-999em;
    width:218px; 
    top:93%;
}
.sf-menu li:hover .dropdown-holder {left:-999em;}

.sf-menu li:hover .dropdown-holder {left:0;}
.arrow { background:url(arrow.png) no-repeat left top; width:32px; height:8px; position:relative; z-index:2; left:10px;}
.dropdown {
    box-shadow:0 0 5px #bec2c8;
    background:#fff;
    height:100%;
    position:relative;
    z-index:1;
    padding:10px 10px 5px;
}
.sf-menu .dropdown li{text-transform:capitalize; border-bottom:1px solid #ccc;}
.sf-menu .dropdown li.last-child { border:0;}
.sf-menu .dropdown a{
    float:left;
    padding:5px 0;
    width:198px;
    color:#333;
}​​

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    我感觉你的例子过于复杂了。

    这是我所知道的最简单的嵌套菜单(带悬停)实现:

    <ul class="outer">
        <li>
            <p>TOP MENU</p>
            <ul class="inner">
                <li><a href="#">link1</a></li>
                <li><a href="#">link2</a>
                    <ul class="inner">
                        <li><a href="">link2.1</a></li>
                    </ul>
                </li>            
                <li><a href="#">link3</a></li>
            </ul>
        </li>
    </ul>
    

    用一点css:

    .outer {
        border: 1px solid red;
        width: 100px;
    }
    
    .inner {
        display: none;
    }
    
    .inner li {
        padding: 0 0 0 10px;
    }
    
    .outer li:hover > .inner {
        display: block;
    }
    

    在 IE8 上测试(在 IE7 模式下使用 IE7 标准)。在这里查看:http://jsfiddle.net/BUuyV/11/

    【讨论】:

      【解决方案3】:

      你可以这样做:

      <!--[if lte IE 7]>
      <style type="text/css">
      nav ul li:first-child ul.dropdown-holder{
          left: 0px;
          top:-4px;
      }
      </style>
      <![endif]-->
      

      注意:要让 :first-child 在 IE8 及更早版本中工作,必须声明 &lt;!DOCTYPE&gt;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多