Vue实现侧边菜单栏手风琴效果实例代码

效果图如下所示:

<template>
  <div class="asideBox">
   <aside>
    <ul class="asideMenu">
     <li v-for="(item,index) in menuList">
      <div class="oneMenu" @click="showToggle(item,index)">
       <img v-bind:src="item.imgUrl" />
       <span>{{item.name}}</span>
      </div>
      <ul v-show="item.isSubShow">
       <li v-for="subItem in item.subItems">
        <div class="oneMenuChild">{{subItem.name}}</div>
       </li>
      </ul>
     </li>
    </ul>
   </aside>
  </div>
</template> 
export default {
  data(){
   return{
    menuList:[
     {
      name:'字符录入',
      imgUrl:require('../assets/images/icon-character.png'),
      isSubShow:false,
      subItems:[
       {
        name:'字符录入'
       },
       {
        name:'白话文录入'
       },
       {
        name:'文言文录入'
       },
       {
        name:'小写数字录入'
       }
      ]
     },
     {
      name:'票据数据录入',
      imgUrl:require('../assets/images/icon-bill.png'),
      isSubShow:false,
      subItems:[
       {
        name:'票据录入'
       },
       {
        name:'翻打传票'
       },
      ]
     },
     {
      name:'交易码录入',
      imgUrl:require('../assets/images/icon-transaction.png'),
      isSubShow:false,
      subItems:[
       {
        name:'交易码录入'
       },
       {
        name:'交易名称录入'
       },
      ]
     },
     {
      name:'操作码录入',
      imgUrl:require('../assets/images/icon-operation.png'),
      isSubShow:false,
      subItems:[
       {
        name:'操作码录入'
       },
       {
        name:'操作名称录入'
       },
      ]
     },
     {
      name:'票据学习',
      imgUrl:require('../assets/images/icon-billearn.png'),
      isSubShow:false,
      subItems:[
      ]
     },
     {
      name:'内部凭证学习',
      imgUrl:require('../assets/images/icon-voucher.png'),
      isSubShow:false,
      subItems:[
      ]
     },
     {
      name:'现金管理学习',
      imgUrl:require('../assets/images/icon-cash.png'),
      isSubShow:false,
      subItems:[
      ]
     },
    ]
   }
  },
  methods:{
   // 点击展开折叠菜单事件
   showToggle:function(item,ind){
    this.menuList.forEach(i => {
     // 判断如果数据中的menuList[i]的show属性不等于当前数据的isSubShow属性那么menuList[i]等于false
     if (i.isSubShow !== this.menuList[ind].isSubShow) {
      i.isSubShow = false;
     }
    });
    item.isSubShow = !item.isSubShow;
    console.log(item.name)
   },
  }
 } 
<style lang="scss" scoped>
 $menuBackColor:#f1f1f1;
 $menuListH2:#8fbfef;
 .asideBox{
  height: 100%;
  width: 300px;
  aside{
   background: $menuBackColor;
   height: 100%;
   .asideMenu{
    .oneMenu{
     height: 50px;
     line-height: 50px;
     font-size: 18px;
     font-weight: normal;
     color: #ffffff;
     background: $menuListH2 url("../assets/images/icon-open.png") no-repeat 280px center;
     border-bottom: 1px solid #669cd9;
     img{
      width: 20px;
      height: 20px;
      margin: 15px 16px 15px 20px;
      vertical-align: top;
     }
    }
    .oneMenuChild{
     padding: 0 20px 0 60px;
     height: 40px;
     line-height: 40px;
     background: $menuBackColor;
     border-bottom: 1px solid #ffffff;
     color: #454343;
     font-size: 18px;
    }
   }
  }
 }
</style> 

总结

以上所述是小编给大家介绍的Vue实现侧边菜单栏手风琴效果实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Vue-路由导航菜单栏的高亮设置方法

    如下所示: 默认情况下,路由的导航菜单,会自动给当前菜单添加router-link-exact-active 和router-link-active 类. 我们可以通过 linkActiveClass 来修改 router-link-active 这个类名, 在路由规则配置中添加配置项linkActiveClass: 'mui-active',通过'mui-active'来自定义控制菜单栏切换样式 以上这篇Vue-路由导航菜单栏的高亮设置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,

  • Vue.js手风琴菜单组件开发实例

    本文为大家分享了vuejs组件开发之手风琴菜单组件实例,供大家参考,具体内容如下 小图标是引入font-awesome字体图标库绘制的.效果如下图所示: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>index</title> <link rel="stylesheet"

  • 基于vue.js实现侧边菜单栏

    侧边菜单栏应该是很多项目里必不可少的 自己手写了一个 下面是效果图 下面就说一下实现的过程 还是比较简单的 首先导入一下需要的文件 <link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css" rel="external nofollow" > <link rel="stylesheet" typ

  • Vue实现侧边菜单栏手风琴效果实例代码

    效果图如下所示: <template> <div class="asideBox"> <aside> <ul class="asideMenu"> <li v-for="(item,index) in menuList"> <div class="oneMenu" @click="showToggle(item,index)"> <

  • jquery实现手风琴效果实例代码

    复制代码 代码如下: //jquery实现手风琴效果  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <

  • vue+Element-ui实现分页效果实例代码详解

    当我们向后台请求大量数据的时候,并要在页面展示出来,请求的数据可能上百条数据或者更多的时候,并不想在一个页面展示,这就需要使用分页功能来去完成了. 1.本次所使用的是vue2.0+element-ui实现一个分页功能,element-ui这个组件特别丰富,分页中给我提供了一个Pagination 分页,使用Pagination 快速完成分页功能 最终效果展示 <div class="deit"> <div class="crumbs"> &l

  • vue框架制作购物车小球动画效果实例代码

    最近在学习前端制作了一个购物车小球的动画效果 直接上图看看效果 下面介绍一下制作这个动画的详细过程: 1.因为使用vue锁业需要使用transition标签包裹 并指定动画三个动画生命周期函数 <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter"> <div class="ball" v-if=&quo

  • Vue.js实现输入框绑定的实例代码

    实现效果如下: 实现代码及注释 <!DOCTYPE html> <html> <head> <title>vue.js数据动态编辑</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style type=

  • vue做网页开场视频的实例代码

    本demo背景是一个视频,文字是打印机效果,按钮在文字打完才会显示,点击按钮背景向上收起,同时显示默认首页组件(如是初建vue项目列表,则为helloWorld.vue的组件内容) 公司电脑没有gif动图尽情谅解 文末会附上demo地址,如需看效果,可前往下载 本人一直很喜欢网页开场有一段视频或动画,个人认为网页的开场动画起到引导浏览作用,相当于网页的一个开始,一个好的开始往往就成功了一半,对于浏览网站的用户来说,也就吸引了极大地注意力. 以上都是废话,网页开场动画在移动端的应用十分广泛,具体操

  • Vue cli+mui 区域滚动的实例代码

    vue cli+mui配合使用达到区域滚到的效果 ,方法如下 第一步 引入mui css js @import url("/static/mui.min.css"); JS import mui from '../../../static/mui.min.js'; 第二步 写结构 mui的区域滚动结构是这样的 <div class="mui-scroll-wrapper"> <div class="mui-scroll">

  • vue router 组件的高级应用实例代码

    1 动态设置页面标题 页面标题是由 <title></title> 来控制的,因为 SPA 只有一个 HTML,所以当切换到不同的页面时,标题是不会发生变化的.必须通过 JavaScript 来修改 <title></title> 中的内容: window.document.title ='xxx' 有一种思路是在每个页面的 *.vue 的 mounted 钩子函数中,通过 JavaScript 来修改 <title></title>

  • 使用Vue.observable()进行状态管理的实例代码详解

    随着组件的细化,就会遇到多组件状态共享的情况, Vuex当然可以解决这类问题,不过就像 Vuex官方文档所说的,如果应用不够大,为避免代码繁琐冗余,最好不要使用它,今天我们介绍的是 vue.js 2.6 新增加的 Observable API ,通过使用这个 api 我们可以应对一些简单的跨组件数据状态共享的情况. 先看下官网描述,如下图 observable()方法,用于设置监控属性,这样就可以监控viewModule中的属性值的变化,从而就可以动态的改变某个元素中的值,监控属性的类型不变量而

  • vue+vue-router转场动画的实例代码

    Vue+WebPack+HBuilder 项目记录 项目搭建完毕了,但是由于是单页应用嵌入HBuilder的时候无法利用它的转场动画,于是找到了vue的转场动画写法,使体验与APP靠近,在此记录: 1.首先我们要监听路由然后判断其是前进还是后退,来实现不同的动画 export default { name: 'app', data () { return { transitionName: 'slide-left' } }, watch: { '$route' (to, from) { cons

随机推荐