我试图以不同的方式设计一系列div中的第一个:
http://jsfiddle.net/tmyie/mA3j8/
.slideshow-img-ctnr {
backround-color: red;
width: 100px;
height: 100px;
border: 1px solid orange;
}
.slideshow-img-ctnr:first-of-type {
border: 1px solid blue;
}
然而,第一个div的造型保持不变:
<div class="slideshow-style-ctnr">
<div class="slideshow-nav">
<div class="slide-right">→</div>
<div class="slide-left">←</div>
</div>
<!-- end slideshow-nav -->
<div class="slideshow-img-ctnr">
<img src="images/stock/fd-3" alt="">
</div>
<!-- end slideshow-img-ctnr -->
<div class="slideshow-img-ctnr">
<img src="images/stock/fd-3" alt="">
</div>
<!-- end slideshow-img-ctnr -->
<div class="slideshow-img-ctnr">
<img src="images/stock/fd-3" alt="">
</div>
<!-- end slideshow-img-ctnr -->
<div class="slideshow-img-ctnr">
<img src="images/stock/fd-3" alt="">
</div>
<!-- end slideshow-img-ctnr -->
<div class="slideshow-img-ctnr">
<img src="images/stock/fd-3" alt="">
</div>
<!-- end slideshow-img-ctnr -->
<div class="slideshow-img-ctnr">
<img src="images/stock/fd-3" alt="">
</div>
<!-- end slideshow-img-ctnr -->
</div>
答案 0 :(得分:1)
.slideshow-img-ctnr:first-of-type
表示:具有类slideshow-img-ctnr
的元素,它是其父级中第一个类型。
因为slideshow-img-ctnr
类的元素是div,:first-of-type
检查它是否是父元素中的第一个div
。它不是,所以元素与选择器不匹配。
答案 1 :(得分:1)
正如评论中所指出的,:first-of-type
用于元素类型,而不是类。
你应该看看this excellent explanation by @BoltClock。
在此特定实例中,可以使用以下内容:
.slideshow-style-ctnr :first-child + .slideshow-img-ctnr {
border: 1px solid blue;
}
但是,如果.slideshow-img-ctnr
不是.slideshow-style-ctnr
的第一个孩子的相邻前一个兄弟,则此方法将失败。这是an example,不会工作。
虽然上面的可以使用当前标记,但最好只使用以下代码:
.slideshow-img-ctnr {
backround-color: red; /* Styling shared by the elements */
width: 100px;
height: 100px;
border:1px solid blue; /* This will be overwritten */
}
使用类.slideshow-img-ctnr
覆盖所有前面兄弟元素的初始边框:
.slideshow-img-ctnr ~ .slideshow-img-ctnr {
border:1px solid orange;
}