Segmented分段控制器怎么实现点击切换样式?
我用Vue写了个分段控制器,但点选后active状态的样式没加上,不知道是哪出问题了?
试过给当前项加:class="{ active: currentIndex === index }",但页面上就是不生效。
<div class="segmented">
<div
v-for="(item, index) in tabs"
:key="index"
@click="currentIndex = index"
:class="{ active: currentIndex === index }"
class="tab"
>
{{ item }}
</div>
</div>
你那段模板代码写法没问题,
:class绑定是正确的。点击能触发@click,说明数据响应式也在工作。最常见的情况是:你给
.tab和.active都写了相同的样式属性(比如background或color),但.tab的选择器优先级更高,把.active的样式覆盖了。检查一下你的CSS,大概是这样:
或者反过来,你可能写成了:
解决办法很简单,把
.active的样式改成更具体的选择器:这样即使
.tab写在前面,tab.active的优先级也足够覆盖它。另外确保
currentIndex在 data 里初始化了,比如data() { return { currentIndex: 0 } }。没初始化的话有时候也会有奇怪的问题。