css - 列表项和下拉列表在 IE8 中变得不稳定

标签 css internet-explorer-8 rgba

我创建了一个下拉菜单。列表项有 rgba 背景。为了使其与 IE8 兼容,我使用了 -ms-filter 属性。但是现在在 IE8 中 hover 背景和下拉子菜单变得不稳定。

我创建了一个 jsfiddle .但不幸的是,jsfiddle 似乎不支持 IE8。 您可以从here下载html文件。

HTML代码如下:

<div id="side_nav" class="widget inner-box">
    <div>
        <ul>
            <li><a href="#"> Home</a></li>
            <li class="dropdown">
                <a href="#"> About us</a>
                <ul>
                    <li><a href="#">Brief history</a></li>
                    <li><a href="#">Organogram</a></li>
                    <li><a href="#">Vision, mission and strategy</a></li>
                </ul>
            </li>
            <li><a href="#"> Contact us</a></li>
        </ul>
    </div>
</div>

和 CSS

#side_nav {
    background: none;
    border: 0 none transparent;
    width: 200px;
}
#side_nav div > ul {
    margin: -15px 0;
    font-weight: bold;
    list-style: none;
}
#side_nav li {
    background: rgba(255, 255, 255, 0.2);
    border: 1px solid #dfdfdf;
    margin-top: 2px;

    background: none\0/;
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#33FFFFFF,endColorstr=#33FFFFFF)";
    zoom: 1;
}
#side_nav li:first-child {
    margin-top: 0;
}
#side_nav a {
    text-decoration: none;
    display: block;
    padding: 5px 10px 5px 15px;
}
#side_nav div > ul > li {
    margin-left: -15px;
    margin-right: -15px;
    position: relative;
}
#side_nav div > ul > li:first-child > a {
    padding-top: 8px;
    padding-bottom: 8px;
    background: #666;
    color: #fff;
}
#side_nav div > ul > li.active,
#side_nav div > ul > li:not(:first-child):hover,
#side_nav div > ul > li:hover li {
    border-top-color: #666;
    border-bottom-color: #666;
}
#side_nav div > ul > li.active > a,
#side_nav div > ul > li:hover > a,
#side_nav div > ul > li:hover li a {
    background: rgba(100,100,100,0.8);

    background: none\0/;
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#CC000000,endColorstr=#CC000000)";
    zoom: 1;
}
#side_nav div > ul > li.active > a,
#side_nav div > ul > li:hover a {
    color: #fff;
}
#side_nav div > ul > li ul {
    display: none;
    margin: 0;
    position: absolute;
    left: 100%;
    top: -1px;
    white-space: nowrap;
    list-style: none;
    padding: 0;
}
#side_nav div > ul > li:hover ul {
    display: block;
}
#side_nav div > ul > li ul li {
}
#side_nav div > ul > li ul a {
    padding-left: 25px;
    padding-right: 25px;
    font-style: italic;
}
#side_nav div > ul > li ul a:hover {
    background: #666;
}

最佳答案

我自己在下拉菜单中发生了几乎相同的情况。我必须做的是取出 css 中的 ms-filter,创建一个“IE8 及以下”​​特定样式表,创建一个类似不透明度的 photoshop png 文件并使用它。相信我,沿着这条路你会省去很多头痛的事情:)

  <!--[if lt IE 9]>
     <link rel="stylesheet" type="text/css" href="css/ie8.css" />
  <![endif]-->

其中的 css 是:

 #yourid{
    background: url('../imgs/ie-transparency.png') repeat;
  }

关于css - 列表项和下拉列表在 IE8 中变得不稳定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23137988/

相关文章:

CSS :nth-child in IE8

用于 IE8 和移动浏览器的 HTML5 地理定位

css - 在降低深色背景容器的不透明度时考虑较低的对比度

javascript - rgba颜色不透明度动画表达

html - 垂直和水平居中div中的图像

Dreamweaver : Solution? CSS 保存错误

html - 父div和子div之间的空间?

javascript - IE8 以不同于所有其他浏览器的方式解析这个简单的正则表达式

jquery - 虽然检测到但未应用类

css - Sass - 将 Hex 转换为 RGBa 以获得背景不透明度