6

我创建了两个选项卡,<li>默认情况下我希望第一个选项卡上的活动集类。

Then, when the second tab is selected, the .active class should pass to the second <li>and be removed from the first.

我可以使用 CSS 来创建一些样式规则,以便直观地显示当前处于活动状态的选项卡。

我还创建了一个JS Fiddle来查看当前输出。

欢迎任何帮助,因为我很困惑。

<ul class="overlay-panel-actions-primary">
    <li v-for="(tab, index) in tabs" @click="currentTab = index">{{tab}}</li>
</ul>
<div class="content-bd">
    <div class="tab-content">
        <div v-show="currentTab === 0">
            List of filters options
        </div>
        <div v-show="currentTab === 1">
            List of sort options
        </div>
    </div>
</div>

new Vue({
  el: "#app",
    data() {
        return {
            currentTab: 0,
            tabs: ['Filter', 'Sort']
        };
    },
})
4

2 回答 2

9

用这个 -

:class="{active: currentTab === index}"

<li v-for="(tab, index) in tabs" @click="currentTab = index" :class="{active: currentTab === index}">{{tab}}</li>

让我知道它是否有效。

小提琴 - https://jsfiddle.net/so3mf8h9/


更新

您也可以使用三元运算符,它也应该工作。

:class="currentTab === index ? 'active' : ''"
于 2019-04-22T12:06:54.287 回答
1

编辑啊,对不起,我以为你在使用 vue-router。当您的网站变得更大时,开始使用路由器可能是一个想法,当您这样做时,此方法将适用于您


Vue 内置了这个功能

您需要做的就是将其添加到您的样式表中

.router-link-exact-active {
    // Your styles go here
    border: 5px dashed red;
}

参考:Vue 文档

这是我如何在几周前创建的 Vue 站点中实现它的示例:MarkupStyles。希望对您有所帮助,如果您对实施此方法还有任何疑问,请告诉我

于 2019-04-22T12:11:04.403 回答