CSS:第一个子选择器IE7

Ed *_* T. 3 css css-selectors internet-explorer-7

我的IE7问题很少.我有以下CSS代码,它在IE7中不起作用.但是,.row [class*="span"]和:first-child如果不合并则都可以工作.有没有办法做类似的事情或让它以某种方式工作?

.row [class*="span"]:first-child {
    margin-left: 0;
}
Run Code Online (Sandbox Code Playgroud)

Bol*_*ock 6

如果第一胎 [class*="span"],检查,看看是否有之前的HTML注释.如果有,IE7会错误地认为评论是第一个孩子,所以它与你正在寻找的元素不匹配.

如果您无法更改标记以删除注释,则可以使用我在此处描述的覆盖技术解决该问题:

.row [class*="span"] {
    margin-left: 0;
}

.row [class*="span"] ~ [class*="span"] {
    margin-left: /* Reset the left margin for other elements */;
}
Run Code Online (Sandbox Code Playgroud)

如果您不知道要将其重置为的边距值,您可以尝试添加另一个针对IE7的* + htmlhack 行为的选择器:

.row [class*="span"]:first-child, * + html .row :first-child + [class*="span"] {
    margin-left: 0;
}
Run Code Online (Sandbox Code Playgroud)

:first-child + [class*="span"] 匹配该元素,如果它只跟随一个注释节点,它是IE7中的第一个子节点.

  • 作为IE7`:first-child`和兄弟组合器(`+`)错误的自动解决方法,您可以[删除评论作为DOM节点](http://tanalin.com/en/blog/2011/08/ie7-加载页面后,通过JavaScript加载css-first-child-adjacent /). (2认同)