Menu--Accordion-sinotico

by Guilherme Santana

HTML

<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css">
<div style="margin-left: 80px;">
  <!-- Contenedor -->
  <ul id="accordion" class="accordion">
    <li>
      <div class="Header">Devices<i class="fa fa-chevron-down"></i></div>
    </li>

    <li><div class="link">ARMS8</div></li>
    <li><div class="link">QDI</div></li>
    <li><div class="link">Armazens e Laboratórios</div></li>
    <li><div class="link">Fabrica de enxofre</div></li>
    <li>
      <div class="link">Fabrica de inseticidas<i class="fa fa-chevron-down"></i></div>
      <ul class="submenu">
        <li><a href="#">Laboratório 1</a></li>
        <li><a href="#">Laboratório 2</a></li>
        <li><a href="#">Laboratório 3</a></li>
      </ul>
    </li>
    <li><div class="link">Instalação piloto</div></li>
    <li>
      <div class="link">Sulfonilureias<i class="fa fa-chevron-down"></i></div>
      <ul class="submenu">
        <li><a href="#">Herb 1A</a></li>
        <li><a href="#">Herb 2A</a></li>
        <li><a href="#">Herb 3A</a></li>
      </ul>
    </li>
  </ul>

</div>

CSS

ul { 
  margin: 0;
  padding: 0;
  list-style-type: none; 
  font-family: 'Open Sans', Arial, Helvetica, Sans-serif, Verdana, Tahoma;
  box-shadow: rgba(0, 0, 0, 0.05) 0px 5px 5px; 
}

a {
  color: #b63b4d;
  text-decoration: none;
}

/** =======================
 * Contenedor Principal
 ===========================*/

.accordion {
  background: #d9edf7;
  width: 100%;
  max-width: 200px;
  margin: 5px auto 5px;

  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
}

.accordion .Header {
  display: block;
  padding: 7px 7px 7px 35%;
  color: black;
  font-size: 12px;
  font-weight: 350;
  border-bottom: 1px solid #CCC;
  position: relative;
  background: #658ca0;
  cursor: pointer;
  box-shadow: rgba(0, 0, 0, 0.05) 0px 5px 5px;
}

.accordion .link {
  cursor: pointer;
  display: block;
  padding: 7px 7px 7px 10px;
  color: #4D4D4D;
  font-size: 12px;
  font-weight: 350;
  border-bottom: 1px solid #CCC;
  position: relative;
  -webkit-transition: all 0.4s ease;
  -o-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.accordion .link:hover 
{
  background: #b8cfdb;
}

.accordion li:last-child .link { border-bottom: 0; }

.accordion li i {
  position: absolute;
  top: 6px;
  left: 12px;
  font-size: 18px;
  color: #595959;
  -webkit-transition: all 0.4s ease;
  -o-transition: all 0.4s ease;
  transition: all 0.4s ease;
}

.accordion li i.fa-chevron-down {
  right: 12px;
  left: auto;
  font-size: 16px;
}


.accordion li.open .link { color: #b63b4d; }

.accordion li.open i { color: #b63b4d; }

.accordion li.open i.fa-chevron-down {
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
}

/**
 * Submenu
 -----------------------------*/


.submenu {
  display: none;
  background: #444359;
  font-size: 12px;
}

.submenu li 
{ 
  border-bottom: 1px solid #4b4a5e;
}

.submenu a {
  display: block;
  text-decoration: none;
  color: #d9d9d9;
  padding: 8px;
 ...

JavaScript

$(function() {
	var Accordion = function(el, multiple) {
		this.el = el || {};
		this.multiple = multiple || false;

		// Variables privadas
		var links = this.el.find('.link');
		// Evento
		links.on('click', {el: this.el, multiple: this.multiple}, this.dropdown)
	}

	Accordion.prototype.dropdown = function(e) {
		var $el = e.data.el;
			$this = $(this),
			$next = $this.next();

		$next.slideToggle();
		$this.parent().toggleClass('open');

		if (!e.data.multiple) {
			$el.find('.submenu').not($next).slideUp().parent().removeClass('open');
		};
	}	

	var accordion = new Accordion($('#accordion'), false);
});