CSS nth-child выберите все, кроме последнего элемента, когда длина неизвестна
UPDATE: ссылка на скрипку, которую я опубликовал, теперь имеет рабочий код. :not(:last-child)
и :nth-last-child(n + 2)
оба работают отлично.
Я пытаюсь использовать nth-child
или nth-last-child
селектор для выбора каждого li
на ul
за исключением последнего. Улов, длина списка может варьироваться от 1 до 5 элементов. Я не смог найти любую документацию или примеры как это сделать.
вот HTML для ul
:
<ul class="breadcrumbs">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/categories/1">Articles</a>
</li>
<li>
<a href="/categories/6">Specials</a>
</li>
<li class="current">
<a href="/categories/6/articles/21">Song Lyrics</a>
</li>
</ul>
вот мой текущий код:
ul > li:nth-last-child(-1n+4) > a:hover {
color: red;
}
этот код по-прежнему выбирает последний элемент в списке. Я также пробовал код ниже, но это ничего не выбирает. Я попробовал несколько других комбинаций, но они либо не работали вообще, либо выбрали последний элемент.
ul > li:nth-child(1):nth-last-child(2) > a:hover {
color: red;
}
3 ответов
использовать :nth-last-of-type
или :nth-last-child
li:nth-last-of-type(n + 2) a {
color: red;
}
<ul class="breadcrumbs">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/categories/1">Articles</a>
</li>
<li>
<a href="/categories/6">Specials</a>
</li>
<li class="current">
<a href="/categories/6/articles/21">Song Lyrics</a>
</li>
</ul>
вы можете использовать этот
<ul class="breadcrumbs">
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/categories/1">Articles</a>
</li>
<li>
<a href="/categories/6">Specials</a>
</li>
<li class="current">
<a href="/categories/6/articles/21">Song Lyrics</a>
</li>
</ul>
в CSS
ul > li{
background:red;
}
ul > li:last-child{
background:black;
}
но если вам абсолютно необходимо изменить свой стиль вне основного элемента li, используйте это
ul > li{
background:black;
}
ul > li:not:last-child{
background:red;
}