首页 > 其他分享 >vue实现tab标签选中

vue实现tab标签选中

时间:2023-09-13 22:31:57浏览次数:26  
标签:index vue return 函数 标签 索引 tab active isActive

tabs实现

<template>
  <div>
    <div v-for="(item, index) in tabs"
      :key="index"
      class="coursespecialtyView-tabs-txt"
      :class="{active: isActive(index)}"
      @click="changeTab(item, index)">
      {{ item.label }}
    </div>
	</div>
</template>
<script>
export default {
  data() {
    return {
    	tabs: [{label: '课程介绍', value: 0}, {label: '课程目录', value: 1}, {label: '版权证明', value: 2}],
			active: 0,
    }
	},
  methods: {
    changeTab(item, index) {
      this.active = index;
      // TODO: 切换tab的相关操作
    },
  },
  computed: {
    isActive() {
      return (index) => {
        return this.active === index;
      };
    },
  },
}
<style>
	.tabs {
    padding: 15px;
    background: #e3ecf5;
    display: flex;
    align-items: center;

    &-txt {
      flex: none;
      margin-right: 65px;

      font-size: 16px;
      color: #101010;

      &.active {
        position: relative;
        color: #0060ff;

        &::before {
          content: '';
          position: absolute;
          left: 50%;
          bottom: -10px;
          transform: translateX(-50%);
          width: 76px;
          height: 6px;
          border-radius: 5px;
          background: #0060ff;
        }
      }
    }
  }
</style>

首先我们看到的是计算属性的定义:

computed: {
  isActive() {
    return (index) => {
      return this.active === index;
    };
  },
},

这里的 isActive 会返回一个函数,这个函数的参数是索引值 index,返回值是当前索引值是否被选中,即布尔值。其中,箭头函数 (index) => {...} 是语法糖,相当于普通函数 function (index) {...}。这里的 return 语句是返回一个表达式,即 this.active === index,表示当前的索引值是否等于选中的索引值,如果相等则为 true,否则为 false

接下来我们看下计算属性的使用:

:class="{active: isActive(index)}"

这里的 :class 是 CSS 类绑定的语法糖,表示如果计算属性 isActive(index) 返回值为 true,则添加 CSS 类 active,否则不添加。而 isActive(index) 是通过当前迭代的 index 作为参数调用计算属性 isActive,传递给该计算属性的函数作为索引值,然后该函数返回当前索引值是否被选中的布尔值。

在这个过程中,使用箭头函数的目的是将 isActive 定义为函数返回函数的形式,这样我们可以在模板中使用 isActive(index) 的方式直接调用,而不需要在 methods 中定义相应的方法。这样做的好处是使代码更简洁,也更易于理解,同时也避免了在模板中定义方法的一些限制。

标签:index,vue,return,函数,标签,索引,tab,active,isActive
From: https://blog.51cto.com/u_15694202/7465115

相关文章

  • 如何在Vue项目中引入avue进行开发?
    Avue的官网官网地址:​ ​https://avuejs.com/​安装3.1安装npmi@smallwei/avue-S$3.2在main.js中引入//引入importAvuefrom'@smallwei/avue';import'@smallwei/avue/lib/index.css';Vue.use(Avue)4使用4.1官方文档4.2实际应用<template><div&g......
  • error Mixed spaces and tabs no-mixed-spaces-and-tabs
    运行Vue项目出现下面截图中的这个问题百度翻译一下,说是不能同时使用tab键和空格来对代码进行缩进。看了一下代码,确实有行代码缩进了6个字符,改回来正常运行。......
  • 如何将element-ui中的tab组件默认展示的tab标签数量改掉?
    要将ElementUI中的Tab组件默认展示的标签数量更改,可以使用tab-list属性设置。tab-list属性用于控制默认展示的标签数量。以下是修改Tab组件默认展示标签数量的示例代码:<template><el-tabsv-model="activeTab":tab-list="tabList"><el-tab-panev-for="tabint......
  • TreeView的基本使用,以及和TableView的区别
    Qt中的QTreeView是一个用于显示树形数据的强大控件,通常用于显示层次结构数据。以下是使用QTreeView的基本步骤:创建一个QTreeView实例:在你的主窗口或其他窗口部件中创建一个QTreeView实例:QTreeView*treeView=newQTreeView(this);创建一个数据模型:QTreeView需要一个数......
  • Vue H5 Swiper 动画
    简介及使用教程VueH5Swiper是一个H5移动滑块组件,适用于H5应用程序,轻量。安装Npmnpmivue-h5-swiperYarnyarnaddvue-h5-swiper使用引入import{Swiper,SwiperItem}from'vue-h5-swiper';注册exportdefault{components:{Swiper,Swiper......
  • Vue 文本字幕组件(Marquee Text Component)
    简介及使用教程Vue文本字幕组件(MarqueeTextComponent)是一个Vue.js的字幕文本组件,具有CSSGPU动画、快速、功能强大等特点。安装Npmnpmivue-marquee-text-componentYarnyarnaddvue-marquee-text-component 使用全局注册importVuefrom'vue'importMa......
  • vue 大转盘旋转效果
    场景如下:用户点击抽奖,转盘立刻线性提速转动,同时请求抽奖接口,旋转过程中等待接口返回抽奖信息接口返回信息后,转盘减速至停转网上找到animejs动画框架,想钻研的同学可以看一下,我没有用此框架实现,是手写的这个demo没有实现停在指定奖品上也没有实现完全停止后,正好停在0°<temp......
  • 记录--用 Vue 实现原神官网的角色切换效果
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言为了更好的了解原神角色,我模仿官网做了一个角色切换效果,在做的过程当中也总结了一些技术点。为了让大家更好的体验,我兼容了PC端和移动端,建议在PC端查看效果更佳。接下来就为大家简单的分享一下!话不多说,......
  • 《VUE》走马灯组件
    <template><!--走马灯--><divclass="box"><divclass="carousel"><divclass="item"v-for="(v,i)inlist":key="i"@click="open(v)"><img:sr......
  • Dubbo配置问题____spring中dubbo标签报错问题和解决方案
    //1.当在springxml中引用dubbo标签时会报错windows-->preferrence-->xml->xmlcatalog-->add->catalogentry-->filesystem,选择模版文件后,修改key值为“http://code.alibabatech.com/schema/dubbo/dubbo.xsd”//资源文件下载 http://pan.baidu.com/s/1c2h6uzA......