vue-nested-menu

1.0.0 • Public • Published

vue-nested-menu Version

A simple hands-on mobile nested menu UI component with a smooth slide animation.

demo

Installation

Yarn / NPM

$ yarn add vue-nested-menu

main.js

import VueNestedMenu from 'vue-nested-menu';
 
Vue.use(VueNestedMenu);

Usage

Basic

index.html

<div id="app">
  <vue-nested-menu :source="menu"></vue-nested-menu>
</div>

main.js

import VueNestedMenu from 'vue-nested-menu';
 
Vue.use(VueNestedMenu)
 
new Vue({
  el: '#app',
  data: {
    menu: {
      title: '首頁',
      children: [
        {
          title: `Today's Deals`,
          link: `/today`,
          children: [],
        },
        {
          title: `Shop By Department`,
          children: [
            {
              title: `Amazon Music`,
              link: `/music`,
              children: [],
            },
            {
              title: `CDs and Vinyl`,
              link: `/cds`,
              children: [],
            },
          ],
        },
      ],
    },
  },
});
 

Single File Component

app.js

import VueNestedMenu from 'vue-nested-menu';
 
Vue.use(VueNestedMenu);
 
// ...

MyMenu.vue

<template>
  <vue-nested-menu :source="menu" />
</template>
 
<script>
export default {
  data() {
    return {
      menu: {
        // your menu data
      },
    };
  },
};
</script> 

Styling

You can use following classes for your own customizations

default style

 
.Menu__header {
    display: flex;
    align-items: center;
    padding-left: 35px;
    height: 50px;
    color: #fff;
    font-size: 16px;
    background-color: #232f3e;
    cursor: pointer;
 
    .arrow {
        padding-top: 2px;
        fill: #fff;
        margin-right: 10px;
        width: 10px;
        height: 100%;
        display: flex;
        align-items: center;
    }
}
 
.Menu__list {
    list-style: none;
    padding-bottom: 2px;
 
    .separator {
        border-bottom: 1px solid #d5dbdb;
        padding: 2px 0 0 0;
        margin: 0;
    }
}
 
.Menu__item {
    color: #4a4a4a;
    padding-left: 35px;
    height: 45px;
    display: flex;
    align-items: center;
    cursor: pointer;
 
    a {
        color: #4a4a4a;
        text-decoration: none;
    }
 
    .arrow {
        padding-top: 2px;
        padding-left: 15px;
        display: flex;
        align-items: center;
        width: 10px;
        height: 100%;
    }
}

Package Sidebar

Install

npm i vue-nested-menu

Weekly Downloads

33

Version

1.0.0

License

MIT

Unpacked Size

907 kB

Total Files

31

Last publish

Collaborators

  • guansunyata