我正在创建一个带有下拉菜单的设计,一切都在现代浏览器(即 Firefox、Chrome、Opera、Safari 和 IE9)中运行良好。但是,由于使用 IE7 和 IE8 的访问者数量较多,我还需要使菜单与这些版本的 Internet Explorer 兼容。
这是下拉菜单(fiddle http://jsfiddle.net/lalatino/suRE6/, pastebin http://pastebin.com/mYYRAG16):
HTML
<ul class="menu_top">
<li><a href="/" title="Home" class="selected">Home</a></li>
<li><a href="/Help_Videos" title="Help Videos" class="haschildren">Help Videos</a><ul>
<li><a href="/Child_Page" title="Child Page">Child Page</a></li>
<li><a href="/Site_Map" title="Site Map" class="haschildren">Site Map</a><ul>
<li><a href="/Galleries" title="Galleries">Galleries</a></li>
<li><a href="/Missing" title="Missing">Missing</a></li></ul>
</li></ul>
</li>
<li><a href="/About" title="About" class="haschildren">About</a><ul>
<li><a href="/Contact" title="Contact">Contact</a></li></ul>
</li>
</ul>
CSS
ul.menu_top {
float:left;
width:70%;
margin: 8px 100px 0 0;
border-radius:4px;
background-color: #c4092a;
list-style-type: none;
z-index:+1;
}
ul.menu_top li {
float: left;
position: relative;
margin: 4px 2em 4px 4px;
padding: 0;
}
ul.menu_top li ul {
visibility: hidden;
position: absolute;
top:100%;
left:0;
padding:0.5em;
list-style-type: none;
white-space:nowrap;
background-color: #c4092a;
border: 1px solid white;
border-radius:4px;
z-index:+1;
}
ul.menu_top li:hover > ul {
visibility: visible;
z-index: +2;
}
ul.menu_top li ul li {
padding: 0;
margin: 12px 4px;
float:none;
border:0;
min-width:3em;
}
ul.menu_top li ul li ul {
top:0;
left:99%;
}
ul.menu_top a {
background-color:#c4092a;
color:white;
text-decoration:none;
padding:4px;
font-size:18px
}
ul.menu_top a:hover,
ul.menu_top a.haschildren.childselected,
ul.menu_top a.selected {
background-color:white;
color:blue;
text-decoration:none;
}
ul.menu_top li a.haschildren:after {
content: "\00A0\00A0\25BC";
}
a {
color:#0000aa;
background-color:inherit;
}
IE7 和 IE8 中的屏幕截图
我已经在IE开发工具中测试了向后兼容性:
-
IE7: The
<ul>
列表被替换并且无法导航
-
IE8:仅缺少圆角(这是一个小问题)
我尝试按照建议修改样式这个答案 https://stackoverflow.com/questions/7449773/internet-explorer-7-css-menu-positioning,但没有成功。
那么,有人知道如何解决这些问题吗?
总的来说,您的问题是您使用的 CSS 比您需要支持的某些浏览器更高级。圆角和大多数伪元素在旧版浏览器中的支持不稳定。
我注意到你的箭头在 IE7 中丢失了,这是我的线索。 IE7不支持伪类元素:after。这是一个有用的参考页面,用于检查浏览器对某些 CSS 的支持http://kimblim.dk/css-tests/selectors/ http://kimblim.dk/css-tests/selectors/.
Quirksmode.org 是一个很好的兼容性资源。这是特定于 :after 的页面http://www.quirksmode.org/css/beforeafter.html http://www.quirksmode.org/css/beforeafter.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)