Чтобы развернуть мои комментарии:
По сути, псевдоклассы, которые соответствуют элементам "next" и "previous", будут соответствовать элементам, отличным от того, который представлен каким-либо составным селектором, к которому вы "присоединяете" их, ипоэтому не будет совместимо с определением CSS «псевдокласс» или «простой селектор» / «составной селектор».
Селекторы L4 описывает простые селекторы и составные селекторы как условия соответствияодновременно против одного элемента.По этому определению селектор типа .special:next-of-type
будет работать только в том случае, если следующий элемент этого типа также соответствует .special
.Затем он будет совпадать рекурсивно, в результате чего получится все .special ~ .special
, кроме первого каждого типа элемента в каждом родительском элементе.Критически, это не будет работать вообще в вашем случае, так как пункт 7 не соответствует .special
.
Человек, читающий этот селектор, мог бы интуитивно понять, что он делает, но он все еще не сочетается с селекторомсинтаксис, потому что для его работы вам нужно определить :next-of-type
как специальный псевдокласс, который игнорирует или сопоставляет отдельно от остальной части составного селектора, в отличие от того, как это было определено в спецификации.Это означает дополнительную сложность для алгоритмов выбора селектора.Подобную сложность можно наблюдать в семействе селекторов jQuery :eq()
- вероятно, есть веская причина, по которой эти селекторы не стандартизированы.
Кроме того, что-то вроде :next-of-type
не являетсяусловие для элемента, но установление связи между этим элементом и некоторым другим элементом.В селекторах отношения между двумя или более различными элементами представлены с помощью комбинаторов.Комбинатор «следующий родной тип» облегчил бы выполнение этой задачи без фундаментального изменения принципа соответствия селектора (например, .special ~~ *
), но его нет ни в одной спецификации селекторов, и я не вижу вариантов использования, таких как этотодин достаточно распространенный для CSSWG, чтобы оправдать его разработку, тестирование и реализацию.А без такого комбинатора вам нужно было бы заранее знать тип элемента, чтобы определить следующего брата этого типа, а это невозможно сделать с помощью доступных сегодня селекторов, даже не включая L4 :nth-child(An+B of S)
.
Таким образом, ответ на
может быть синтезирован ": следующего типа"?
- нет, не с помощью доступных сегодня селекторов, а решениеэто будет работать с существующим синтаксисом селектора, это ввести комбинатор с этой точной функциональностью.