Почему бы не вставить гибкую строку заполнителя под каждой конкретной строкой гибких данных?
Я создал демо-версию, где вы можете запустить этот фрагмент и щелкнуть каждую строку, чтобы выяснить, работает ли он для вас:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<style>
ul,
li {
list-style: none;
margin: 0;
padding: 0;
}
.flex-box {
width: 800px;
display: flex;
flex-direction: column;
}
.flex-box__nav {
display: flex;
}
.flex-box__item {
flex: 1;
border: 1px solid black;
}
.flex-box__collapse {
display: none;
background: red;
}
</style>
<div class="flex-box">
<ul class="flex-box__nav">
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
</ul>
<div class="flex-box__collapse">
collapsed area
</div>
<ul class="flex-box__nav">
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
<li class="flex-box__item">click me
<img src="">
</li>
</ul>
<div class="flex-box__collapse">
collapsed area
</div>
</div>
<script>
function clickHanlder() {
var isCollapse = true;
return function () {
this.nextSibling.nextSibling.style.display = isCollapse ? "block" : "none";
isCollapse = !isCollapse;
}
}
document.querySelectorAll(".flex-box__nav").forEach(function (val) {
val.onclick = clickHanlder();
});
</script>
</body>
</html>