I am trying to add a vertical line along first li elements when they are expanded and remove when they are closed but its not coming out. Will li::after not do the job?. please help me with this.
This vertical line should be along the first level of heirarchy only
I have created a treeview with three list items and shown the implemeted code to which i have to apply vertical lines
var toggler = document.getElementsByClassName("caret");
var i;
for (i = 0; i < toggler.length; i++) {
toggler[i].addEventListener("click", function() {
this.parentElement.querySelector(".nested").classList.toggle("active");
this.classList.toggle("caret-down");
});
}ul, #main {
list-style-type: none;
}
#myUL {
margin: 0;
padding: 0;
}
li::after{
border-left 1px solid black;
}
.caret {
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
.caret::before {
content: "25B6";
color: black;
display: inline-block;
margin-right: 6px;
}
.caret-down::before {
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
.nested {
display: none;
border-left 1px solid #000
}
.active {
display: block;
border-left 1px solid #000
}<ul id="main">
<li><span class="caret">First</span>
<ul class="nested">
<li>sub1</li>
<li>sub2</li></ul>
<li><span class="caret">Second</span>
<ul class="nested">
<li>sub1</li>
<li>sub2</li></ul>
<li><span class="caret">Third</span>
<ul class="nested">
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
</li>
</li>
</ul>Advertisement
Answer
You can do it with .nested.active css rule like below:
You should add below css:
.nested.active{
border-left:1px solid red;
}
Its added in this snippet:
var toggler = document.getElementsByClassName("caret");
var i;
for (i = 0; i < toggler.length; i++) {
toggler[i].addEventListener("click", function() {
this.parentElement.querySelector(".nested").classList.toggle("active");
this.classList.toggle("caret-down");
});
}ul, #main {
list-style-type: none;
}
#myUL {
margin: 0;
padding: 0;
}
li::after{
border-left 1px solid black;
}
.caret {
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
.caret::before {
content: "25B6";
color: black;
display: inline-block;
margin-right: 6px;
}
.caret-down::before {
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
}
.nested {
display: none;
border-left 1px solid #000
}
.active {
display: block;
border-left 1px solid #000
}
.nested.active{
border-left:1px solid red;
}<ul id="main">
<li><span class="caret">First</span>
<ul class="nested">
<li>sub1</li>
<li>sub2</li></ul>
<li><span class="caret">Second</span>
<ul class="nested">
<li>sub1</li>
<li>sub2</li></ul>
<li><span class="caret">Third</span>
<ul class="nested">
<li>sub1</li>
<li>sub2</li>
</ul>
</li>
</li>
</li>
</ul>