У меня есть элемент DOM (#installations) с количеством детей, только один из них имеет класс .selected. Мне нужно выбрать этот класс и первые 3 из остальных (: not (.selected)) и показать их - цель состоит в том, чтобы отображать только 4 элемента, независимо от того, какой элемент имеет класс .selected.
Проблема заключается в выражении:
#installations > *:not(.selected):nth-of-type(-n+3), .selected
: nth-of-type() игнорирует селектор: not() и просто выбирает первые 3 дочерних элемента #installation. Например, если у меня есть этот HTML:
<div id="installations">
<div id="one"/>
<div id="two"/>
<div id="three" class="selected"/>
<div id="four"/>
<div id="five"/>
</div>
У меня будет только один, два, три, а не первые четыре. Логическим следствием является то, что nth-of-type() будет иметь только (один, два, четыре, пять), из которых: not() уже исключил выбранный, выбрав (один, два, четыре) а затем другая часть селектора , .selected
добавит выбранный элемент.
Если выбрано не в первых четырех элементах, скажем, шестое, мы будем выбирать первые три + шестой.
Чтобы уточнить: выбор выделенного плюс 3 смежных элемента также прекрасен. Тем не менее, это тоже сложно в случае, если вы выбрали последние 3 (если мы выберем следующие 3 смежных элемента)