Хитрая часть - это «перевернутые» углы справа.Эту проблему можно решить с помощью радиально-градиентного фона в элементах: before и: after.
Радиальный градиент обычно используется для постепенного перехода от одного цвета к другому.Однако мы можем манипулировать им таким образом, чтобы в этом случае у нас была «острая» линия между белым и синим.Для этого вы должны убедиться, что значение px для синего и белого очень близко друг к другу.
background: radial-gradient(circle at top left, blue 10px, white 11px);
Я произвел эффект здесь: hover, но вы можете добавить класс к вашему активному элементу списка и сделать там магию.
.menu{
list-style-type: none;
background: blue;
width: 200px;
border-radius: 20px;
padding: 30px 0 30px 30px;
}
.menu li{
position: relative;
padding: 5px;
border-radius: 10px 0 0 10px;
}
.menu li:hover{
background: white;
}
.menu li:hover:after,
.menu li:hover:before{
content:'';
position: absolute;
width: 10px;
height: 10px;
right: 0px;
}
.menu li:hover:after{
top: -10px;
background: radial-gradient(circle at top left, blue 10px, white 11px);
}
.menu li:hover:before{
bottom: -10px;
background: radial-gradient(circle at bottom left, blue 10px, white 11px);
}
Hover over menu items to see the effect
<ul class="menu">
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
</ul>