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="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div id="accordian">
<ul>
<li><h3 class="mtop"> </h3></li>
<li>
<h3><a href="#">Dashboard</a></h3>
<ul>
<li class="litop"><a href="#">Reports</a></li>
<li class="limid"><a href="#">Search</a></li>
<li class="limid"><a href="#">Graphs</a></li>
<li class="libot"><a href="#">Settings</a></li>
</ul>
</li>
<li>
<h3><a href="#">Calendar</a></h3>
<ul>
<li class="litop"><a href="#">Current Month</a></li>
<li class="limid"><a href="#">Current Week</a></li>
<li class="limid"><a href="#">Previous Month</a></li>
<li class="limid"><a href="#">Previous Week</a></li>
<li class="limid"><a href="#">Next Month</a></li>
<li class="limid"><a href="#">Next Week</a></li>
<li class="limid"><a href="#">Team Calendar</a></li>
<li class="limid"><a href="#">Private Calendar</a></li>
<li class="libot"><a href="#">Settings</a></li>
</ul>
</li>
<li>
<h3><a href="#">Favourites</a></h3>
<ul>
<li class="litop"><a href="#">Global favs</a></li>
<li class="limid selecteda"><a href="#">My favs</a></li>
<li class="limid"><a href="#">Team favs</a></li>
<li class="libot"><a href="#">Settings</a></li>
</ul>
</li>
<li><h3 class="mbot"> </h3></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).ready(function() {
$("#accordian a").click(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;
closest_ul.find("ul").slideUp(function() {
if (++count == closest_ul.find("ul").length)
parallel_active_links.removeClass("active");
});
if (!link_status) {
closest_li.children("ul").slideDown();
closest_li.addClass("active");
}
})
$(".selecteda").selected().slideDown();
})