Vue简单实现tab栏切换(高亮)

本文介绍了如何在Vue.js中不使用快捷组件,通过数据绑定和事件处理实现Tab栏切换时的高亮效果。主要步骤包括:定义activeIndex作为初始选中项,给每个Tab添加点击事件并传递index,根据点击更新activeIndex,最后通过条件类绑定实现高亮样式。同时,文章提及了如何根据activeIndex动态渲染对应数据。
摘要由CSDN通过智能技术生成

        在许多项目中,最常见的莫过于tab栏切换高亮以及根据tab栏切换渲染数据,这时候就有刚入门的小伙伴问了,如何不用快捷组件快速简单的实现tab栏高亮呢?非常简单,我们只需要通过index就可以实现了!

1、首先,我们在data中定义一个activeIndex

 data() {
    return {
      activeIndex:0
    };
  },

activeIndex当做下标使用,这里赋值为0默认第一个,可以赋值为-1(-1的话在页面渲染是不会被显示的

2、然后,给我们的tab栏添加点击事件,需要传它真正的下标index(即我们点的哪一个)

:这里为了实现效果,提前定义的数据并渲染出效果

//渲染数据
<ul>
  <li v-for="(item,index) in arr" :key="index">{{item}}</li>
</ul>
data() {
    return {
      activeIndex:0,
   //自定义数据
      arr:['苹果','梨','橘子','火龙果','猕猴桃']
    };
  },

然后添加点击并传递index(下标)事件

//标签添加点击事件并传index
<ul>
  <li v-for="(item,index) in arr" :key="index"
     @click="activeHandle(index)">{{item}}</li>
</ul>


//js中methods写事件名获取点击的当前下标
<script>
export default {

  data() {
    return {
      activeIndex:0,
      arr:['苹果','梨','橘子','火龙果','猕猴桃']
    };
  },

  mounted() {
    
  },

  methods: {
    activeHandle(index){
    //把我们自定义的下标赋值
      this.activeIndex=index
    }
  },
};
</script>

3、css中写需要的高亮样式,通过三元表达式判断activeIndex和index是否相等,如果相等的话添加这个class,否则不添加

例:点击当前tab栏某一项,字体为红色,添加下划线

.active{
  color: red;
  border-bottom: 1px solid #000;
}

tab栏li标签通过三元表达式去判断添加class类名(当然 不一定是li标签)

<ul>
  <li v-for="(item,index) in arr" :key="index" @click="activeHandle(index)"
  :class="activeIndex==index?'active':''">{{item}}</li>
</ul>

这样就实现简单的tab栏切换高亮了,对于根据tab栏切换、对应的数据跟随变动 咱们这种自定义简单的小数组是实现不了的,同理通过activeIndex找到tab数据中的那一条并通过filter过滤匹配下方列表渲染的对应数据就可以实现了,改天我拿个数据再来详细步骤

  • 15
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
好的,以下是一个简单Vue 实现 tab 切换的代码示例。 首先,需要在 Vue 实例中定义一个 data,用来存储当前选中的 tab: ```javascript new Vue({ el: '#app', data: { currentTab: 'tab1' }, methods: { selectTab(tab) { this.currentTab = tab } } }) ``` 然后,在 HTML 中使用 v-bind 和 v-on 指令来绑定数据和事件: ```html <div id="app"> <div class="tabs"> <div class="tab" :class="{ 'active': currentTab === 'tab1' }" @click="selectTab('tab1')">Tab 1</div> <div class="tab" :class="{ 'active': currentTab === 'tab2' }" @click="selectTab('tab2')">Tab 2</div> <div class="tab" :class="{ 'active': currentTab === 'tab3' }" @click="selectTab('tab3')">Tab 3</div> </div> <div class="tab-content"> <div class="tab-pane" v-show="currentTab === 'tab1'"> Content for tab 1 </div> <div class="tab-pane" v-show="currentTab === 'tab2'"> Content for tab 2 </div> <div class="tab-pane" v-show="currentTab === 'tab3'"> Content for tab 3 </div> </div> </div> ``` 在这个示例中,使用了 v-bind:class 指令来动态绑定 class,根据当前选中的 tab 判断是否添加 active 类名。同时使用了 v-on:click 指令来监听点击事件,并调用 selectTab 方法切换 tab。 最后,在 CSS 中定义样式: ```css .tabs { display: flex; } .tab { padding: 10px; cursor: pointer; } .tab.active { background-color: #ccc; } .tab-content { border: 1px solid #ccc; padding: 10px; } .tab-pane { display: none; } .tab-pane.show { display: block; } ``` 在这个示例中,使用了 display 属性来控制 tab 内容的显示,根据当前选中的 tab 判断是否显示。同时为 active 类名和 show 类名分别定义了样式,使得选中的 tab 和对应的内容高亮显示。 以上就是一个简单Vue 实现 tab 切换的代码示例,希望对你有所帮助。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值