css child(>)选择器无法在IE8中运行?

时间:2012-04-24 22:19:08

标签: css internet-explorer internet-explorer-8 css-selectors

从我在这里和那里收集和理解的东西(当我错了时阻止我): 只要您使用doctype触发标准模式,子选择器(&gt;)就可以在IE7 +上运行,html5的<!DOCTYPE html>应该这样做。

仍然,我的css:

nav > ul > li > a
{
    padding: 0.2em 2em 0.2em 2em;
    background-color: #FAFAFA;
}
nav > ul > li > a:hover
{
    background-color: #AFAFAF;
}

似乎没有达到我的HTML:

<!DOCTYPE html>
...
<body>
<header>
    <nav>
        <a class="inblock valignC logo" href="/"><img src="static/img/logo.gif" /></a>
        <!--Menu nav : LOGO | Agence | Portfolio | Equipe | Clients | Contact-->
        <ul class="inblock valignC">
            <li class="inline"><a class="ie" href="/agence/">Agence</a></li>
        ...
        </ul>
...
在IE8中,我必须使用我在目标<a>上添加的专用.ie类。

任何解释?

4 个答案:

答案 0 :(得分:11)

您需要在9:

下使用HTML5 Shiv for IE版本
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->

答案 1 :(得分:2)

它可能不是选择器,而是标签本身,因为它们在IE8及以下版本中未被定义为标准标签。您可以通过仅使用ul > li并查看选择器是否有效来查看是否是这种情况。

除了在更多人升级浏览器之前不使用HTML5标签,除此之外,您无法做很多事情。就个人而言,我现在宁愿使用<div class="nav">

答案 2 :(得分:1)

我认为这是因为旧浏览器没有导航元素。

答案 3 :(得分:1)

它不起作用,因为IE8无法理解或“正确”实现<nav>等HTML标记。

2015年之前不要使用HTML 5.这有两个原因:

  1. W3C对HTML5的建议直到2014年12月才最终确定,因此任何当前的浏览器实现都在猜测最终文档将包含的内容。现在可以使用的代码不保证在该点之后工作(但可能会)。添加JS黑客,使浏览器符合HTML5标准,增加了更多潜在的前向兼容性问题。

  2. 到2015年,IE8的市场份额可能会达到最低水平,例如:低于2-3%,此时,支持IE8的好处将被不使用HTML5兼容代码的成本所抵消。

  3. 与此同时,使用HTML5文档类型是个好主意,因为它是向前兼容的,并且使用HTML4中也有效的HTML5标记子集(换句话说,HTML4中有效的标记) HTML5,其中大部分都是)。我个人喜欢使用<div class="nav"></div>代替<nav></nav>等等。

    在一天结束时,按照自己的意愿行事,但至少需要了解这些问题,尤其是在HTML5是经常使用不当的流行语的世界中。