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;
});