scss 第二个子选择器失效问题
有如下代码,它无法按照预期运行:
html:
<div class="top-info">
<div></div>
<span>无床位</span>
<div></div>
<span>有床位</span>
</div>
scss:
.top-info{
color: $fontColor;
>div{
width: .75rem;
height: .75rem;
}
>div:first-child{
background-color: $withoutBed;
}
>div:nth-child(2){
background-color: $hasBed;
}
}
但若改成:
scss:
.top-info{
color: $fontColor;
>div{
width: .75rem;
height: .75rem;
}
>div:first-child{
background-color: $withoutBed;
}
>div:nth-child(n+2){
background-color: $hasBed;
}
}
它便生效了!(顺带一提,使用last-child也没有生效,!important也试过,应该不是优先级问题),有大佬知道是什么原因吗?
nth-child用错了,nth-child(2)是匹配父元素的第二个元素,如果前面有元素名,再匹配对应的元素名对不对,所以,他是双重匹配,而不是先过滤再匹配。类似的选择器,可以换用nth-of-type。
这种需求,最好的做法是给div加上class,使用class设置样式,不然dom结构变化,css就失效了