JSFiddle Link:http://jsfiddle.net/sNeR7
文字下的边界"我绝对肯定;声称绝对确定是一个愚蠢的企业。"不应该在那里,因为我添加了这种风格规则:
.bannerItem:last-of-type
{
border-bottom: none!important
}
在@media(max-width: 40em)
{ ... }
内。
知道为什么会这样吗?
答案 0 :(得分:1)
:last-of-type
选择特定类型的最后一个元素,而不是具有特定类的最后一个元素。实际上,您的选择器.bannerItem:last-of-type
将不会选择任何内容。
div.bannerItem:last-of-type
会选择最后一个div
元素,而不是选择类.bannerItem
的最后一个元素。
由于您的标记在div
之后包含.bannerItem
,因此您的选择器将无法按预期运行。
假设可能有任何数量的.bannerItems
我认为实际上并没有办法用纯css选择器做你想做的事。
如果总有三个你可以使用:
.bannerItem:nth-child(3) {
border-bottom: none!important
}
答案 1 :(得分:1)
使用:last-of-type
时意识到它只搜索父级中某个类型(p
,div
等)的最后一个元素,而不是类或ID值。由于.bannerHolder
中的所有子项属于同一类型,因此正确使用:last-of-type
将最终选择.bannerPager
,因为它是其父项的最后一个子div。
如果您想在.bannerItem
中设置最后.bannerHolder
个样式,可以使用:
.bannerHolder div.bannerItem:nth-child(3) {border-bottom: none;}
您还可以使用相邻的兄弟组合器来支持旧版本的IE:
.bannerHolder .bannerItem + .bannerItem + .bannerItem {border-bottom: none;}
注意 :nth-child()
也不会搜索元素类,它只关心元素是否是其父元素的子元素。所以添加上面的类实际上并不是必需的。