I have a scrolling sidebar menu.so when, I select a menu items it should be showed top position of the sidebar. No problem about set active menu. I got it. but I can’t set top position of the sidebar. Please don’t suggest jQuery. rather suggest me vanilla JavaScript here is some code reference
.sidebar{
height:100px
overflow-y:scroll;
}
.sidebar ul li{
padding:30px;
}<!-- CSS -->
<!-- html -->
<div class="sidebar">
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
<li>item5</li>
<li>item7</li>
<li>item8</li>
<li>item9</li>........
<li>item100</li>
</ul>
</div>Advertisement
Answer
Pure CSS solution using :target pseudo-class, flexbox layout with the order property.
.sidebar {
background-color: #ddd;
height: 200px;
overflow-y: scroll;
}
.sidebar ul {
display: flex;
flex-direction: column;
margin: 0;
}
.sidebar li {
padding: 1em;
order: 1;
}
.sidebar :target {
background-color: #aaa;
order: 0;
}<div class="sidebar">
<ul>
<li id="item1"><a href="#item1">item1</a></li>
<li id="item2"><a href="#item2">item2</a></li>
<li id="item3"><a href="#item3">item3</a></li>
<li id="item4"><a href="#item4">item4</a></li>
<li id="item5"><a href="#item5">item5</a></li>
<li id="item7"><a href="#item7">item7</a></li>
<li id="item8"><a href="#item8">item8</a></li>
<li id="item9"><a href="#item9">item9</a></li>
<li id="item100"><a href="#item100">item100</a></li>
</ul>
</div>