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
JavaScript
x
7
1
.sidebar{
2
height:100px
3
overflow-y:scroll;
4
}
5
.sidebar ul li{
6
padding:30px;
7
}
JavaScript
1
16
16
1
<!-- CSS -->
2
3
<!-- html -->
4
<div class="sidebar">
5
<ul>
6
<li>item1</li>
7
<li>item2</li>
8
<li>item3</li>
9
<li>item4</li>
10
<li>item5</li>
11
<li>item7</li>
12
<li>item8</li>
13
<li>item9</li>........
14
<li>item100</li>
15
</ul>
16
</div>
Advertisement
Answer
Pure CSS solution using :target
pseudo-class, flexbox
layout with the order
property.
JavaScript
1
18
18
1
.sidebar {
2
background-color: #ddd;
3
height: 200px;
4
overflow-y: scroll;
5
}
6
.sidebar ul {
7
display: flex;
8
flex-direction: column;
9
margin: 0;
10
}
11
.sidebar li {
12
padding: 1em;
13
order: 1;
14
}
15
.sidebar :target {
16
background-color: #aaa;
17
order: 0;
18
}
JavaScript
1
13
13
1
<div class="sidebar">
2
<ul>
3
<li id="item1"><a href="#item1">item1</a></li>
4
<li id="item2"><a href="#item2">item2</a></li>
5
<li id="item3"><a href="#item3">item3</a></li>
6
<li id="item4"><a href="#item4">item4</a></li>
7
<li id="item5"><a href="#item5">item5</a></li>
8
<li id="item7"><a href="#item7">item7</a></li>
9
<li id="item8"><a href="#item8">item8</a></li>
10
<li id="item9"><a href="#item9">item9</a></li>
11
<li id="item100"><a href="#item100">item100</a></li>
12
</ul>
13
</div>