То, что PatrikAkerstrand сказал о несоответствии правилу, является правильным.Псевдо: first-child (к сожалению) предназначается только для первого дочернего элемента его родителя, у которого также есть элемент / класс / что бы вы ни указали.
Я только полчаса ругался на то, почему следующее не будет работать
<div id="header">
<a href="."><img src="path/file.png" /></a>
<div class="img"></div>
<div class="img"></div>
<div class="img"></div>
</div>
#header .img {
margin:0 25px;
}
#header .img:first-child,
#header .img:last-child {
margin:0;
}
Я обнаружил, что решение заключалось в том, чтобы обернуть div.img в изображения div.i, как это
<div id="header">
<a href="."><img src="path/file.png" /></a>
<div class="images">
<div class="img"></div>
<div class="img"></div>
<div class="img"></div>
</div>
</div>
#header .images .img {
margin:0 25px;
}
#header .images .img:first-child,
#header .images .img:last-child {
margin:0;
}
Редактировать: Если вы неЕсли вы хотите добавить несемантическую разметку, вы можете использовать псевдокласс: first-of-type.Это, однако, не поддерживается в более ранних версиях IE.