使用vue常用指令实现一个动态菜单效果。
实现代码如下:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document Title</title>
</head>
<body>
<div id="app">
<div class="menu" v-for="(item,index) in menuList" :key="index" @mouseleave="item.isShow=false">
<div class="menu_title" @mouseover="item.isShow=true">{{item.title}}</div>
<div class="menu_sub" v-show="item.isShow" @mouseover="item.isShow=true"
v-for="(subItems,index2) in item.subMenu" :key="index2" @click="showMenuInfo(index,index2)">
{{subItems}}
</div>
</div>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.13/vue.min.js"></script>
<script>
let vm = new Vue({
el: '#app',
data: {
menuList: [
{
title: '公司简介',
subMenu: [
'发展历程',
'公司文化',
'公司招聘'
],
isShow: false
},
{
title: '产品介绍',
subMenu: [
'银行',
'保险',
'工业'
],
isShow: false
},
{
title: '投资者关系',
subMenu: [
'公司股票',
'公司章程',
'公司财务'
],
isShow: false
}
]
},
methods: {
showMenuInfo(index, index2) {
//console.log(this);
console.log(index + "," + index2);
//console.log(this.menuList);
console.log(this.menuList[index].subMenu[index2]);
}
}
})
</script>
<!--vue页面模板习惯把样式表写在最下面-->
<style>
#app {
margin: 0px auto;
width: 480px;
height: auto;
display: flex;
justify-content: space-around;
}
.menu {
width: 160px;
height: auto;
padding: 0px;
/*background: aliceblue;*/
cursor: pointer;
}
.menu .menu_title {
width: 100%;
height: 40px;
text-align: center;
line-height: 40px;
background: orange;
color: #FFF;
}
.menu .menu_sub {
width: 100%;
height: 40px;
text-align: center;
line-height: 40px;
background: aliceblue;
color: #666;
}
</style>
</body>
</html>
运行效果如下:
