Как выбрать 4 последние элемента в списке разбитом на 4 столбца?
Суть проблемы в следующем, если в последнем ряду остается 3, 2, 1 элемента то блоки начинают пропорционально растягиваться в зависимости от ширины контейнера. т.е. свойство flex: 1 1 auto !important; этому способствует. Нужно чтоб все блоки оставались одной ширины независимо сколько их в ряду.
Вот отсюда мысль найти последние 3 элемента и задать им другие условия. мб как-то по другому можно?
https://codepen.io/Abrakadabra-the-sans/pen/KwVdBgw
.box {
display:flex;
flex-wrap:wrap;
row-gap: 1.5rem !important;
gap: 1.5rem !important;
align-items: center !important;
}
div.child {
width: 360px;
height:200px;
position: relative;
align-self: stretch !important;
flex: 1 1 auto !important;
background:red;
}
<div class="box">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
Что-то типа такого
div.child:nth-child(4n+1):nth-last-child(-n+3) {
background:yellow;
flex: 0 1 calc((100%/4) - 0.375rem*3) !important
}
div.child:nth-child(4n+2):nth-last-child(-n+2) {
background:blue;
flex: 0 1 calc((100%/4) - 0.375rem*3) !important
}
div.child:nth-child(4n+3):nth-last-child(-n+1) {
background:green;
flex: 0 1 calc((100%/4) - 0.375rem*3) !important
}