【发布时间】:2014-11-06 19:59:26
【问题描述】:
我在使用 Internet Explorer 9 时遇到了一个奇怪的问题。使用的 CSS 过滤器渐变会切断我的子菜单。例如,这里是JSFiddle。下面是一个简单的代码:
HTML
<div id="headWrapper">
<header>
<nav id="main">
<ul>
<li>
<a href="javascript:void(0);">Parent Navigation Item</a>
<ul class="submenu">
<li><a href="javascript:void(0);">Child Nav Item 1</a></li>
<li><a href="javascript:void(0);">Child Nav Item 2</a></li>
<li><a href="javascript:void(0);">Child Nav Item 3</a></li>
<li><a href="javascript:void(0);">Child Nav Item 4</a></li>
<li><a href="javascript:void(0);">Child Nav Item 5</a></li>
<li><a href="javascript:void(0);">Child Nav Item 6</a></li>
</ul>
</li>
</ul>
</nav><!-- main -->
</header>
</div><!-- headWrapper -->
CSS
*{margin: 0; padding: 0;}
header, nav {display: block;}
#headWrapper {border-bottom: 1px solid #eee; position: relative; z-index: 5; -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e1eaf0',GradientType=0 );}
header {width: 1000px; height: 75px; margin: 0 auto; clear: both;}
#main {float: left;}
#main ul {list-style: none;}
#main li {float: left;}
#main a {display: block;}
#main li ul.submenu {display: block; padding: 4px; border: 1px solid #000; position: absolute; z-index: 999; border: 1px solid #ddd; margin-left: 12px; border-top: 0; background-color: beige; -webkit-border-radius: 0 0 8px 8px; -moz-border-radius: 0 0 8px 8px; border-radius: 0 0 8px 8px;}
#main li ul.submenu li {float: none; display: block;}
如果我从#headWrapper 中删除过滤器渐变,我的菜单会按预期工作。有了渐变,我只能查看边框,它会切断任何超过标题实际高度的东西。
- 为什么会这样?
- 我该如何修复它?
我已经通过 IE Emulated 和 Browser Shots 对其进行了测试,它在两者中都出现了故障,所以看起来这不仅仅是一个模拟器问题(或者 Browser Shots 正在使用一个模拟器,只是向我展示了我已经知道的内容)。我已经玩了一个小时并且没有运气修复它,除非我完全删除渐变或删除我也不想做的固定 / z-index。
【问题讨论】:
标签: html css internet-explorer internet-explorer-9