css伪类选择器.class:last-of-type为什么不起作用

一:前言

事情是这样的,公司论坛要改版的时候,发现一个问题.class:last-of-type不起作用,.class:last-child也不起作用,html就像下面这样:

<div class="list">
 <div class="top">置顶帖子</div>
 <div class="top">置顶帖子</div>
 <div class="top">置顶帖子</div>
 <div>普通帖子</div>
 <div>普通帖子</div>
 <div>普通帖子</div>
</div>

我是想在顶置的帖子的最后一个想加下边框,css如下

.top:last-of-type{
  border-bottom:1px solid #000;
}

结果这样是没效果的,网上一顿搜索终于找到了原因, 原因:伪类不支持class只支持html标签元素

解决方法一

改变html结构,使用html标签元素span:last-of-type

<div class="list">
 <span>置顶帖子</span>
 <span>置顶帖子</span>
 <span>置顶帖子</span>
 <div>普通帖子</div>
 <div>普通帖子</div>
 <div>普通帖子</div>
</div>
span{display:block;}
span:last-of-type{
  border-bottom:1px solid #000;
}

解决办法二

js解决办法,给最后一个.top元素添加额外的类,给这个类添加想要的样式

$('.top').last().addClass('last');
.last{
border-bottom: 1px solid #000;
}

评论

发表回复