JSFiddle - React, Tailwind, and code Playground

by Ying Chor Ding

HTML

<script src="http://thecodeplayer.com/uploads/js/prefixfree-1.0.7.js"></script>
<script src="http://thecodeplayer.com/uploads/js/jquery-1.7.1.min.js"></script>
<div id="accordian">
    <ul>
        <li class="active">
            <a href="index.html">Augumented Reality Platform</a><span class="arrow">></span>
            <ul>
                <li><a href="#">Todo List</a></li>
                <li class="active"><a href="index.html">Namespaces</a> <span class="arrow">></span>
                    <ul>
                        <li class="active"><a href="#">Namespace List</a><span class="arrow">></span>
                            <ul>
                                <li><a href="#">anonymous_namespace</a></li>
                                <li><a href="#">NCommon</a></li>
                                <li><a href="#">std</a></li>
                                <li><a href="#">units</a></li>
                            </ul>
                        </li>
                        <li><a href="#">Namespace Members</a><span class="arrow">></span>
                            <ul>
                                <li><a href="#">All</a></li>
                                <li><a href="#">Functions</a></li>
                                <li><a href="#">Variables</a></li>
                                <li><a href="#">Typedefs</a></li>
                                <li><a href="#">Enumerations</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li><a href="#">Examples</a></li>
            </ul>
        </li>
    </ul>
</div>

CSS

* {
  margin: 0;
  padding: 0;
}

body {
  background: #000000;
  font-family: "Segoe UI", "Segoe Print";
}

#accordian {
  background: #000000;
  width: 150px;
  margin: 50px auto 0 auto;
  color: white;
}

#accordian h3 {
  background: #19293e;
  border: 2px solid #379ae2;
  margin-bottom: 2px;
  margin-top: 2px;
}

#accordian h3 a {
  padding: 0 5px;
  font-size: 12px;
  line-height: 18px;
  display: block;
  color: white;
  text-decoration: none;
  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
}

#accordian h3:hover {
  background-color: #FF0;
}

#accordian h3 span {
  font-size: 16px;
  margin-right: 10px;
}

#accordian li {
  list-style-type: none;
  margin-left: 0px;
}

.litop {
  border-left: solid 2px #379ae2;
  border-top: solid 2px #379ae2;
  border-right: solid 2px #379ae2;
  background-color: #19293e;
}

.limid {
  border-left: solid 2px #379ae2;
  border-right: solid 2px #379ae2;
  background-color: #19293e;
}

.libot {
  border-left: solid 2px #379ae2;
  border-bottom: solid 2px #379ae2;
  border-right: solid 2px #379ae2;
  background-color: #19293e;
}

.mbot {
  border-: solid 2px #379ae2;
  border-bottom-right-radius: 10px;
  line-height: 15px;
}

.mtop {
  border-: solid 2px #379ae2;
  border-top-right-radius: 10px;
  line-height: 15px;
}

.selected {
  background-color: #F60;
}

#accordian ul ul li a,
#accordian h4 {
  color: white;
  text-decoration: none;
  font-size: 11px;
  line-height: 18px;
  display: block;
  padding: 0 15px;
  text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
  transition: all 0.15s;
  position: relative;
}

#accordian ul ul li a:hover {
  background: #FF0;
}

#accordian ul ul {
  display: none;
}

#accordian li.active>ul {
  display: block;
}

#accordian ul ul ul {
  margin-left: 0px;
  border-left: 1px dotted rgba(0, 0, 0, 0.5);
}

#accordian a:not(:only-child):after {
  content: "\f104";
  font-family: fontawesome;
  position: absolute;
  right: 10px;
...

JavaScript

$(document).on("click", "#accordian li", function () {
var link = $(this);
var closest_ul = link.closest("ul");
var parallel_active_links = closest_ul.find(".active")
var closest_li = link.closest("li");
var link_status = closest_li.hasClass("active");
var count = 0;

if (!$(ev.target).is('a')) {
    closest_ul.find("ul").slideUp(function () {
        if (++count == closest_ul.find("ul").length) {
            parallel_active_links.removeClass("active");
            $(this).parent().find("span").removeClass("arrow").addClass("spanarrowup");
        } else {
            $(this).find("span").removeClass("spanarrowup").addClass("arrow");
        }
    });
}
if (!link_status) {
    closest_li.children("ul").slideDown();
    closest_li.addClass("active");
}
return false;
});