Родительский элемент (li
) должен быть позиционирован: относительный, а элемент ::after
должен быть позиционирован абсолютно. Обратите внимание, что я удалил высоту элемента after - например, по крайней мере, у одного из li было более одной строки - и вместо этого применил значения top, right и bottom, чтобы они были такими же, как у отступа в li.
.sidebar {
background-color: #09204f;
color: white;
width: 200px;
position: absolute;
top: 0;
left: 0;
bottom: 0;
}
.sidebar img {
padding: 0px 20px;
}
body {
margin: 25px;
}
ul {
margin: 0;
padding: 0;
list-style: none;
}
.nav-item {
font-size: 24px;
padding: 15px 10px;
border: 1px dashed white;
margin: 5px 5px;
position: relative
}
.nav-item .kpi-name {
font-size: 14px;
}
.nav-item .kpi-value {
font-size: 14px;
font-weight: 700;
}
.nav-item.green-item:after {
background-color: #15a859;
border-color: #15a859;
}
.nav-item.amber-item:after {
background-color: #f8ae0a;
border-color: #f8ae0a;
}
.nav-item.red-item:after {
background-color: #e73e46;
border-color: #e73e46;
}
.nav-item:after {
content: "";
display: inline-block;
width: 7px;
position: absolute;
top: 15px;
right: 10px;
bottom: 15px;
border: 1px solid #000;
border-radius: 7px;
}
.page {
background-color: #f3f8ff;
position: absolute;
top: 0;
left: 200px;
right: 0;
bottom: 0;
}
<div class="main-wrap">
<div class="sidebar">
<div class="menu">
<ul>
<li class="nav-item green-item">
Menu Item
</li>
<li class="nav-item amber-item">Menu 2
<div>
<span class="kpi-name">
Active User
</span>
<span class="kpi-value">
2400
</span>
</div>
</li>
<li class="nav-item green-item ">Menu 3</li>
</ul>
</div>
</div>
<div class="page">
<h1>PAGE CONTENTS HERE</h1>
</div>
</div>