🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

A simple, horizontal, expanding accordion menu component for Vue.js.

Menu _Navigation

Documentation

vue-accordion

Simple accordion menu component for Vuejs

Check it out live!

Note

The API has changed. Check v0.0.3 documentation if you use the old version.

Install

NPM / Yarn

Install the package:

npm install vue-accordion 

Then import it in your project

import Vue from 'vue' import {vueAccordion} from 'vue-accordion'  Vue.component('vue-accordion', vueAccordion)

Browser global

Just include vue & vue-accordion

<script scr="path/to/vue.js"></script> <script src="path/to/dist/vue-accordion.js"></script>

If you just want to play around, unpkg has ready-to-use packages from NPM.

<script src="https://unpkg.com/vue"></script> <script src="https://unpkg.com/vue-accordion"></script>

Then register the component:

<script>   Vue.component('vue-accordion', vueAccordion)      var vm = new Vue({     ...   }); </script>

Usage

Simply use it like so:

<vue-accordion :items="items" :accordionClass="acClass" :styles="styles"></vue-accordion>

Structure

Once the accordion has been rendered, it'll create the following structure:

<div class="vue-accordion">   <ul>     <!-- First menu item-->     <li>       <a>         <h2>...</h2>         <p>...</p>       </a>     </li>     <!-- Second menu item-->     <li>       <a>         <h2>...</h2>         <p>...</p>       </a>     </li>     ...   </ul> </div>

All CSS is based uppon this structure.

.vue-accordion {   ... }  .vue-accordion ul {   ... }  ...  .vue-accordion ul li a h2 {   ... }

If you want to modify the styling, take a look at the accordionClass and styles props.

Options

items

Mandatory. An array of objects to create the panels inside the accordion. Each object must have this structure:

{   title: 'First',   text: 'text',   url: '#',   image: '/images/one.jpg' } 

Take into consideration the width of the accordion and the images you use. If the image is shorter, you'll see a an awful grey background.

accordionClass

Optional. A string bounded to the class attribute of the main div. Defaults to vue-accordion.

styles

Optional. An object whose keys are other objects containing specific CSS properties to be bound to the elements created inside the accordion:

{   // this will be bound to the style attribute of all `div`s inside the accordion   div: {     height: '350px'   },   // this will be bound to the style attribute of all `ul`s inside the accordion   ul: {     color: '#F00'   },   // this will be bound to the style attribute of all `li`s inside the accordion   li: {     fontSize: '15px'   },   // this will be bound to the style attribute of all `a`s inside the accordion   a: {     padding: '30px'   },   // this will be bound to the style attribute of all `h2`s inside the accordion   h2: {     marginTop: '100px'   },   // this will be bound to the style attribute of all `p`s inside the accordion   p: {     textTransform: 'uppercase'   } }

TODO

  • Tests
  • Router-link

CREDITS

Most of the CSS belongs to this guy


You May Also Like