vue实现标签页切换/制作tab组件【详细】

这篇具有很好参考价值的文章主要介绍了vue实现标签页切换/制作tab组件【详细】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue实现标签页切换【详细】

在vue中实现标签页切换有如下2种方式:
① 使用动态组件
② 使用路由

当然你可以使用第三方ui来实现,比如Element Plus。不过自己试着实现一下会更好。

这里讲一下第一和第二种方式,以组件实现为重点,那么就先讲一下使用路由的方式。

使用路由实现 Tab切换

首先,在router文件夹的index.js文件中,配置子页面的路由

 {
      path: '/Profile',
      name: 'Profile',
      meta:{
        showHead:true,
        path:'个人中心'
      },
      component: () => import('../views/ProfileView.vue'),
      children:[
        {
          path:'article',
          name:'article',
          component: () => import('../components/Article.vue')
        },
        {
          path:'picture',
          name:'picture',
          component: () => import('../components/Picture.vue')
        }
      ]
    },

以防万一你不知道,path使用‘/xx’的是根路径,使用’xxx‘会自动拼接。

以 / 开头的嵌套路径将被视为根路径。这允许你利用组件嵌套,而不必使用嵌套的 URL。

接着放出我们的组合拳与

 <div class="column">
          <router-link to="/profile/article" name="article">文章</router-link>
          <router-link to="/profile/picture" name="picture">图片</router-link>
 </div>
 <div class="content">
          <router-view></router-view>
</div>

使用 component 动态组件实现 Tab切换

大概的思路是这样的:首先,每一个tab都有一个panel。
其次,我们希望tab和他的panel能够关联起来,那么他们之间最好有什么相同的特征,所以我们就想到了id。我们可以给每组的男嘉宾和女嘉宾都用上相同的编号,这样我们只需要看编号就知道谁对应谁啦!
最后,大家都知道,约会是一对一的。因此,我们男一(mtab-1)和女一(panel-1)约会的时候,其他的女嘉宾是不能出场的。

控制组件的显示隐藏可以用v-if/v-show。
用isShow来记录当前出场的男嘉宾(mtab)。
用数组panelShowList来记录每位女嘉宾(panel)是否出场的。

大概的框架是这样的:

<div class="column">
  <button class="mtab" id="mtab-0" @click="clickTab">0</button>
  <button class="mtab" id="mtab-1" @click="clickTab">1</button>
  <button class="mtab" id="mtab-2" @click="clickTab">文章</button>
</div>
<div class="content">
  <div class="panel" id="panel-0" v-if="panelShowList[0]">
    我是内容
  </div>
  <div class="panel" id="panel-1" v-if="panelShowList[1]">
    我是内容1
  </div>
  <div class="panel" id="panel-2" v-if="panelShowList[2]">
    我是内容2
  </div>
</div>

不要忘记isShow和panelShowList是有初始值的。开场男女嘉宾,安排!

data(){
    return{
      isShow:0,
      panelShowList:[1,0,0]
    }
  }

差点忘了要给出场男嘉宾一个特写,给被选中的tab增加一些醒目的样式。

        <div class="column">
          <button class="mtab" id="mtab-0" @click="clickTab" :class="{highlightTab:panelShowList[0]}">0</button>
          <button class="mtab" id="mtab-1" @click="clickTab" :class="{highlightTab:panelShowList[1]}">1</button>
          <button class="mtab" id="mtab-2" @click="clickTab" :class="{highlightTab:panelShowList[2]}">文章</button>
          
        </div>

ps: panelShowList存储了女嘉宾们的出场状态,数组下标为男女嘉宾相同的编号。

接着,我们开始思考怎么样才能让tab和panel这两边的嘉宾能够成双成对的出现呢?
答:那当然得让他们相互牵手成功!

前面我们已经在双方的id上做好了手脚,那么现在就简单了。

首先,获取男方的id,不对,是tab的id。

 clickTab(e){
      console.log('我的编号是',e.srcElement.id.charAt(5)) 
      this.isShow = e.srcElement.id.charAt(5)

接着我们需要主持人来呼唤女嘉宾出场,不是。是利用watch侦听器对isShow属性的监听。只要isShow改变就代表当前出场的男嘉宾改变了,因此立马通知前一位女嘉宾退场,对应的女嘉宾出场。

watch:{
    isShow(newValue,oldValue){
      this.panelShowList[oldValue]=0
      this.panelShowList[newValue]=1
    }
  }

这里我们扩展一个知识点,那就是watch的深层监听。

watch 默认是浅层的:被侦听的属性,仅在被赋新值时,才会触发回调函数——而嵌套属性的变化不会触发。如果想侦听所有嵌套的变更,你需要深层侦听器:

ok,到了这里,我们就成功实现了标签页切换功能。文章来源地址https://www.toymoban.com/news/detail-632949.html

到了这里,关于vue实现标签页切换/制作tab组件【详细】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaScript编程实现tab选项卡切换的效果+1

    之前在“圳品”信息系统使用了tab选项卡来显示信息,详见: JavaScript编程实现tab选项卡切换的效果 在tab选项卡中使用其它div来显示信息就出现了问题,乱套了,比如下面的这段代码: 运行效果如下: 可以看到,第1张选项卡中的div id=\\\"div1\\\" class=\\\"blue\\\"选项卡1/div消失了,而第

    2024年02月03日
    浏览(48)
  • 前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏 验证码登录模版 密码登录模版

    前端Vue自定义验证码密码登录切换tabs选项卡标签栏标题栏 验证码登录模版 密码登录模版, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=13221 效果图如下: 实现代码如下: 使用方法 HTML代码实现部分 组件实现代码

    2024年02月11日
    浏览(54)
  • 使用JS来实现tab栏切换

    这是我今天从学习的知识点,今天试着做了一个tab栏切换,学到很多的知识点,讲师也比学校的老师讲的更加详细明白 个人名片:  😊作者简介:一名大一在校生,web前端开发专业  🤡 个人主页:几何小超  🐼座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成

    2024年02月07日
    浏览(32)
  • 前端Vue自定义可自由滚动新闻栏tabs选项卡标签栏标题栏组件

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月16日
    浏览(48)
  • 通过JavaScript、css、H5 实现简单的tab栏的切换和复用

    目录 一、效果展示 二、实现的大致原理 三、H5的布局 四、CSS样式 五、JS代码内容 六、完整代码 1.我们先通过css 和h5布局得到最基本的tab栏样式(有代码参考) 2.在获得样式,给我们所需要点击的目标设置监听事件,在获取节点,设置一个自定义的节点属性index,通过它在获取

    2023年04月09日
    浏览(38)
  • 鸿蒙 ArkTS Tabs组件实现类微信(可滑动的)tabBar页签切换页面功能

    :harmonyOS   鸿蒙开发  ArkTS  TabContent 使用场景:类微信底部导航栏,点击/左右滑动切换页面并加载数据 开发环境:ArkTS3.1  API9  Phone设备 HMOS Dev官方文档:文档中心 演示效果: 目录 完整Demo已提交至Gitee 搭建页面 自定义TabContent(往后翻有完整代码) 思路 开始 完

    2024年02月04日
    浏览(57)
  • Vue3实现带动画效果的tab栏切换

    效果图如下所示: 实现思路: 其实很简单 1、首先切换tab栏时tab标签激活下标与对应显示内容下标要一致。 2、其次点击tab栏切换时更新下标 3、最后就是css添加动画效果 这样就 了!!! 上全部代码

    2024年02月22日
    浏览(38)
  • element-ui tab标签禁止切换

    给el-tabs标签设置style=“pointer-events: none;” 注意:每个el-tab-pane标签也要加上style=\\\"pointer-events: auto;\\\"否则各个页面的所有鼠标事件都会失效 HTML JS

    2024年02月11日
    浏览(45)
  • vue实现弹出框内嵌页面展示,添加tab切换展示实时加载

    最近做业务的时候,发现产品的原型图上有一个弹出框,上面包含了两个窗口要进行切换。 每个窗口都有分页列表展示、搜索、添加和删除,感觉就是两个完整的页面,如果全写在一个页面会很麻烦,还可能会出现一系列的问题,后期改起来比较麻烦,所以我就准备分开来写

    2024年02月16日
    浏览(37)
  • 解决element ui中el-tabs标签点击切换闪屏问题

    现象:点击切换 element ui中el-tabs时候,table会出现闪一下的状况; 初始element ui中el-tabs组件代码如下: 使用v-if=\\\"activeName===\\\'first\\\'\\\" 解决闪屏   改造后代码如下:

    2024年02月07日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包