SCSS中:nth-child选择器失效,卡片旋转效果异常求助
问题分析
你写的.card:nth-child(n)选择器逻辑是找每个.card元素作为其父元素的第n个子元素,但你的HTML结构里,每个.card都被单独的.col-4容器包裹,每个.col-4只有这一个子元素。这就导致所有.card都是父元素的:nth-child(1),自然全部应用了-11.21deg的旋转,而:nth-child(2)和:nth-child(3)根本匹配不到任何元素。
解决方法
方法一:调整选择器层级
把:nth-child定位到.row下的.col-4元素上,再选中内部的.card,就能正确匹配三个不同卡片:
.row { .col-4:nth-child(1) .card { transform: rotate(-11.21deg); } .col-4:nth-child(2) .card { transform: rotate(0); } .col-4:nth-child(3) .card { transform: rotate(11.19deg); } }
如果习惯SCSS嵌套写法,也可以写成:
.row { .col-4 { &:nth-child(1) { .card { transform: rotate(-11.21deg); } } &:nth-child(2) { .card { transform: rotate(0); } } &:nth-child(3) { .card { transform: rotate(11.19deg); } } } }
方法二:给卡片添加自定义类
这种方式更直观,避免层级选择器的歧义,直接给每个卡片加独立类名:
修改后的HTML:
<div class="row pt-5"> <div class="col-4"> <div class="card card-1"> <div class="bg-clr-gradient d-flex align-items-center"> <h1 class="big px-2">1.</h1> <h3 class="text-white">Vraag uw offerte aan</h3> </div> <div class="steps-foto"> <img src="fotos/fotograaf.png" alt=""> </div> </div> </div> <div class="col-4"> <div class="card card-2"> <div class="bg-clr-gradient d-flex align-items-center"> <h1 class="big px-2">2.</h1> <h3 class="text-white">Wij matchen</h3> </div> <div class="steps-foto"> <img src="fotos/fotograaf.png" alt=""> </div> </div> </div> <div class="col-4"> <div class="card card-3"> <div class="bg-clr-gradient d-flex align-items-center"> <h1 class="big px-2">3.</h1> <h3 class="text-white">Ontvang verschillende voorstellen en vergelijk</h3> </div> <div class="steps-foto"> <img src="fotos/fotograaf.png" alt=""> </div> </div> </div> </div>
对应的SCSS:
.card { &.card-1 { transform: rotate(-11.21deg); } &.card-2 { transform: rotate(0); } &.card-3 { transform: rotate(11.19deg); } }
内容的提问来源于stack exchange,提问作者StephDev
相关产品推荐
相关产品推荐

