JSFiddle - React, Tailwind, and code Playground
HTML
<div class="block">
<div>
<input type="radio" name="item" id="item-one" hidden />
<label for="item-one">Menu 1</label>
<div>
<p><a href="">Menu 1.1</a></p>
<p><a href="">Menu 1.2</a></p>
<p><a href="">Menu 1.3</a></p>
<p><a href="">Menu 1.4</a></p>
<p><a href="">Menu 1.5</a></p>
</div>
</div>
<div>
<input type="radio" name="item" id="item-two" hidden />
<label for="item-two">Menu 2</label>
<div>
<p><a href="">Menu 2.1</a></p>
<p><a href="">Menu 2.2</a></p>
<p><a href="">Menu 2.3</a></p>
<p><a href="">Menu 2.4</a></p>
</div>
</div>
<div>
<input type="radio" name="item" id="item-three" hidden />
<label for="item-three">Menu 3</label>
<div>
<p><a href="">Menu 3.1</a></p>
<p><a href="">Menu 3.2</a></p>
<p><a href="">Menu 3.3</a></p>
</div>
</div>
<div>
<input type="radio" name="item" id="item-four" hidden />
<label for="item-four">Menu 4</label>
<div>
<p><a href="">Menu 4.1</a></p>
</div>
</div>
<div>
<input type="radio" name="item" id="item-five" hidden />
<label for="item-five">Menu 5</label>
<div>
<p><a href="">Menu 5.1</a></p>
<p><a href="">Menu 5.2</a></p>
<p><a href="">Menu 5.3</a></p>
</div>
</div>
</div>
CSS
* {
margin: 0;
padding: 0;
font-family: sans-serif;
font-size: 14px;
text-align: center;
}
.block {
max-width: 360px;
width: 100%;
height: 100%;
padding: 15px;
z-index: 10;
background-color: #fafafa;
overflow: hidden;
margin: 50px auto;
}
.block > div {
display: block;
position: relative;
padding: 0 0 0 35px;
border-top: 2px solid #ffffff;
background-color: #b1b1b1;
color: black;
}
.block > div:nth-child(1):before {
content: "1";
width: 22px;
font-weight: bold;
text-align: center;
position: absolute;
left: 0;
top: 0;
background-color: #466970;
padding: 7.5px;
margin: 0;
color: white;
}
.block > div:nth-child(2):before {
content: "2";
width: 22px;
font-weight: bold;
text-align: center;
position: absolute;
left: 0;
top: 0;
background-color: #466970;
padding: 7.5px;
margin: 0;
color: white;
}
.block > div:nth-child(3):before {
content: "3";
width: 22px;
font-weight: bold;
text-align: center;
position: absolute;
left: 0;
top: 0;
background-color: #466970;
padding: 7.5px;
margin: 0;
color: white;
}
.block > div:nth-child(4):before {
content: "4";
width: 22px;
font-weight: bold;
text-align: center;
position: absolute;
left: 0;
top: 0;
background-color: #466970;
padding: 7.5px;
margin: 0;
color: white;
}
.block > div:nth-child(5):before {
content: "5";
width: 22px;
font-weight: bold;
text-align: center;
position: absolute;
left: 0;
top: 0;
background-color: #466970;
padding: 7.5px;
margin: 0;
color: white;
}
.block > div>input + label {
cursor: pointer;
display: block;
padding: 7.5px 15px;
background-color: #e5903b;
transition: background-color 0.5s;
color: black;
}
.block > div>input ~ div {
visibility: hidden;
max-height: 0;
padding: 0;
opacity: 0;
transition: all 0.5s;
}
.block > div>input:checked + label {
background-color: #5988b7;
transition: background-color 0.5s;
color:...
JavaScript
/* Help Please */
/* I want to add another level to this menu. just like
Menu 1
Menu 1.1
Menu 1.1.1
Menu 2
Menu 2.1
Menu 2.1.1
Menu 2.1.2
*/