vue 实现tab菜单切换

1、目标:

实现切换tab菜单,激活状态,按钮高亮,显示对应的菜单内容

2、实现

<template>
  <div class="tan_menu">
    <ul class="container">
      <li
        class="item"
        v-for="item in tab_menu"
        :key="item.type"
        :class="{ active: current_menu === item.type }"
        @click="selectMenu(item.type)"
      >
        {{ item.label }}
      </li>
      <!-- <li class="item" :class="{ actice: current_menu === 'login' }">登录</li>
      <li class="item" :class="{ actice: current_menu === 'register' }">
        注册
      </li> -->
    </ul>
    <template v-if="current_menu === 'login'">
      <div class="login">这是--登录--内容</div>
    </template>
    <template v-if="current_menu === 'register'">
      <div class="register">这是--注册--内容</div>
    </template>
  </div>
</template>

<script>
export default {
  name: "TabMenu",
  data() {
    return {
      tab_menu: [
        { type: "login", label: "登录" },
        { type: "register", label: "注册" },
      ],
      current_menu: "login",
    };
  },
  methods: {
    selectMenu(type) {
      this.current_menu = type;
    },
  },
};
</script>

<style lang="less" scoped>
// 清除内外边距
* {
  margin: 0;
  padding: 0;
}
.tan_menu {
  // margin: 20px 20px 0;
  .container {
    list-style: none;
    margin: 100px auto;
    width: 200px;
    height: 40px;
    line-height: 40px;
    text-align: center;
    display: flex;
    justify-content: space-around;
    background-color: skyblue;
    .item {
      width: 100px;
      cursor: pointer;
      &.active {
        background-color: pink;
        color: #fff;
      }
    }
  }
  .login,
  .register {
    width: 300px;
    height: 100px;
    line-height: 100px;
    text-align: center;
    border: 2px solid pink;
    margin: 20px auto;
  }
}
</style>

效果:

### 回答1: 好的,我可以为您提供一些参考。首先,使用 VueJavaScript 实现 tab 切换菜单的基本思路是:创建菜单组件,选择默认显示的选项卡,当点击选项卡时切换对应的内容。以下是一个简单的实例: HTML: ```html <div id="app"> <ul class="tabs"> <li v-for="(tab, index) in tabs" :key="index" @click="activeTab = tab">{{ tab }}</li> </ul> <div class="content"> <div v-for="(content, index) in contents" :key="index" v-show="activeTab === tab">{{ content }}</div> </div> </div> ``` JavaScript: ```javascript var app = new Vue({ el: '#app', data: { tabs: ['Tab 1', 'Tab 2', 'Tab 3'], contents: ['Content for Tab 1', 'Content for Tab 2', 'Content for Tab 3'], activeTab: 'Tab 1' } }); ``` CSS: ```css .tabs { list-style: none; margin: 0; padding: 0; display: flex; } .tabs li { padding: 12px 24px; background-color: #ddd; cursor: pointer; } .tabs li.active { background-color: #fff; } .content div { display: none; } .content div.show { display: block; } ``` 这个例子,我们创建了一个菜单组件,包含选项卡和相应的内容。当用户点击选项卡时,我们使用 `v-show` 指令来切换显示对应的内容。我们还设置了一个 `activeTab` 变量来追踪当前活动的选项卡。 希望这个例子能帮到您。如果您有任何问题,请随时问我。 ### 回答2: 使用Vue和JS实现Tab切换菜单的方法如下: 1. 在HTML定义菜单的容器,并为每个菜单项添加对应的索引值,例如: ```html <div id="app"> <ul class="menu"> <li class="menu-item" :class="{active: activeTab === 1}" @click="setActiveTab(1)">菜单1</li> <li class="menu-item" :class="{active: activeTab === 2}" @click="setActiveTab(2)">菜单2</li> <li class="menu-item" :class="{active: activeTab === 3}" @click="setActiveTab(3)">菜单3</li> </ul> <div v-show="activeTab === 1">内容1</div> <div v-show="activeTab === 2">内容2</div> <div v-show="activeTab === 3">内容3</div> </div> ``` 2. 在Vue的实例定义相关的数据和方法,在data添加activeTab变量,并在methods添加setActiveTab方法,用于设置当前点击的菜单项对应的索引值,并切换显示相应的内容,例如: ```javascript new Vue({ el: '#app', data: { activeTab: 1 }, methods: { setActiveTab(tabIndex) { this.activeTab = tabIndex; } } }); ``` 3. 使用CSS样式来设置菜单项的样式和切换时的选状态,例如: ```css .menu-item { display: inline-block; padding: 10px 20px; cursor: pointer; } .menu-item.active { background-color: #ccc; } ``` 这样,点击不同的菜单项时,对应的内容将会显示出来,并且菜单项也会有选的样式。 ### 回答3: 使用VueJavaScript可以轻松实现Tab切换菜单。首先,在Vue的data属性定义一个用于存储当前选Tab的变量。 ``` data() { return { activeTab: 'tab1' } } ``` 然后,在HTML模板添加一个包含Tab标题的菜单,并为每个Tab添加一个点击事件,用于切换Tab。 ``` <div> <div class="tab-menu"> <button @click="activeTab = 'tab1'" :class="{ 'active': activeTab === 'tab1' }">Tab 1</button> <button @click="activeTab = 'tab2'" :class="{ 'active': activeTab === 'tab2' }">Tab 2</button> <button @click="activeTab = 'tab3'" :class="{ 'active': activeTab === 'tab3' }">Tab 3</button> </div> <div class="tab-content"> <div v-if="activeTab === 'tab1'">Tab 1的内容</div> <div v-if="activeTab === 'tab2'">Tab 2的内容</div> <div v-if="activeTab === 'tab3'">Tab 3的内容</div> </div> </div> ``` 在上述代码,每个按钮都添加了一个点击事件来更新activeTab的值,关联了对应的Tab内容。同时,使用了Vue的条件渲染指令v-if,根据activeTab的值来显示对应的Tab内容。 最后,可以根据需要自定义样式,给当前选Tab按钮添加一个active类来突出显示: ``` <style> .tab-menu button.active { background-color: #ccc; } </style> ``` 以上就是使用VueJavaScript实现Tab切换菜单的基本步骤,通过修改activeTab的值来更新所显示的Tab内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值