HTML中的hr打破了div:first-child?

Fyg*_*ygo 0 html css css-selectors

我有一个div,里面有2个浮动的div.在他们上面有一个HR标签.我试图使用第一个孩子,因为div之间应该有一个间距.但是,这不起作用.规则永远不会被应用.好像hr标签打破了它; 如果我删除小时它工作正常.另外:最后一个孩子工作正常,有或没有hr.有人对此有一些合乎逻辑的解释吗?

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style>
        #outer {
            width: 600px;
        }
        #outer > div {
            float: left;
            width: 290px;
            background-color: #1982c8;
        }
        #outer > div:first-child {
            margin-right: 20px;
        }
    </style>
</head>
<body>
    <div id="outer">
        <hr>
        <div>
            First inner.
        </div>
        <div>
            Second inner.
        </div>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

小提琴

Fré*_*idi 6

<hr>元素的确是其父的第一个孩子,不是<div>.因此,:first-child这里不合适.

如果您定位的浏览器支持CSS3,则可以使用:first-of-type:

#outer > div:first-of-type {
    margin-right: 20px;
}
Run Code Online (Sandbox Code Playgroud)