Требуется :not(.first), :not(.last)
, то есть версия :not(.first.last)
, поддерживаемая Селектором уровня 3 (из Селекторов 4, пока не поддерживается всеми браузерами, а также jQuery):
ul.tabs > li.active:not(.first), ul.tabs > li.active:not(.last) {
background-color: #F00;
}
<ul class="tabs">
<li class="first">1st</li>
<li class="active last">2nd</li>
</ul>
<ul class="tabs">
<li class="active first last">1st</li>
</ul>
Однако, как указывает Рунин, вы можете просто использовать :first-of-type
и :last-of-type
или :first-child
и :last-child
вместораздувания разметки с помощью «первого» и «последнего» классов (если эти классы представляют то же самое, что и псевдоклассы).
Фактически, если вы переключитесь на эти псевдоклассы, вы можетеупростите ваш CSS до одного селектора, сжав :not(:first-of-type), :not(:last-of-type)
до :not(:only-of-type)
:
ul.tabs > li.active:not(:only-of-type) {
background-color: #F00;
}
<ul class="tabs">
<li>1st</li>
<li class="active">2nd</li>
</ul>
<ul class="tabs">
<li class="active">1st</li>
</ul>