vue 二级级联菜单

本文展示了如何使用Vue.js实现一个二级联动菜单的功能。通过数据驱动,动态显示菜单项,并通过点击事件实现子菜单的展开与收起效果。同时,菜单项具有激活状态,方便用户跟踪当前选中项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<ul class="sidebar-menu">
<li v-for="(item,index) in items" :key="index">
        <h2
@click="showToggle(item,index)"
:class="item.isSubShow && isShow === index? 'add-bg':''">{{item.name}}
<i
v-if="item.subItems"
class="arrow el-icon-arrow-down"
:class="item.isSubShow && isShow === index? 'rotate':''"></i>
</h2>
<ul
class="sub-menu" :class="item.isSubShow && isShow === index? 'active':''">
          <li v-for="(subItem,i) in item.subItems" :key="i">
            <h3
@click="subChange(item.name,i,subItem)"
:class="subShow === i && activeItem === item.name? 'sub-active':''">{{subItem.name}}</h3>
          </li>
        </ul>
      </li>
</ul>

data() {
return {
isShow:0,
subShow: -1,
activeItem: '',
items:[
{
name:'家用电器',
isSubShow:true,
subItems:[
{
name:'笔记本电脑',
url: '1'
},
{
name:'台式电脑',
url: '1'
},
{
name:'电视机',
url: '1'
}
]
},
{
name:'服装',
isSubShow:false,
subItems:[
{
name:'男士服装',
url: '1'
},
{
name:'女士服装',
url: '1'
},
{
name:'青年服装',
url: '1'
}
]
},
{
name:'服装2',
isSubShow:false,
url: '1'
}
]
}
},

 

 

methods: {
showToggle (item,index){
    //判断如果当前点击的是其他选项就全部关闭
if(item.url){
  alert(item.url)
}
if(this.isShow != index){
for(var i=0;i<this.items.length;i++){
this.items[i].isSubShow = false;
}

}
item.isSubShow = !item.isSubShow;
this.isShow = index;
},
subChange (name,i,subItem){
    this.subShow = i;
    this.activeItem = name;
    alert(subItem.url)
}
},

 

 

.sub-menu{
max-height: 0;
overflow: hidden;
transition: all .3s ease;
}
.add-bg{
color: red;
}
.active{
max-height: 200px;
}
.arrow{
transition: all .3s ease;
}
.rotate{
transform: rotate(180deg);
}
.sub-active{
color: blue;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值