Как выбрать последний элемент.
Но если стоит class .none
тогда выбрать пред последний.
.menuElement:last-child {
color: red;
}
.none {
display: none;
}
<ul>
<li class="menuElement">Element1</li>
<li class="menuElement">Element2</li>
<li class="menuElement">Element3</li>
<li class="menuElement">Element4</li>
<li class="menuElement">Element5</li>
<li class="menuElement">Element6</li>
<li class="menuElement">Element7</li>
<li class="menuElement">Element8</li>
<li class="menuElement">Element9</li>
<li class="menuElement none">Element10</li>
</ul>
li.menuElement:last-child {color: blue;} /* последний элемент */
li:not(.none).menuElement {color: red;} /* все элементы без класса .none */
/*----------------------------------------*/
li.menuElement:nth-last-child(2) /* вот так можно выбрать предпоследний элемент, но проверку на наличие класса у последнего li делать через js, но по сути первый вариант должен решить вашу проблему */
Вы НЕ можете в css задать селектор для родительского или предшествующего элемента. Смиритесь или используйте яваскрипт.
Перестройте список чтобы он шел в обратном порядке. Потом обстильте его так ,чтобы визуально порядок был прямой. Тогда вы сможете подействовать на "предпоследний" элемент, не зная его номера (т.к. по DOM он второй):
ul {
display: flex;
flex-direction: column-reverse;
}
.menuElement:first-child,
.menuElement.none:first-child+.menuElement {
color: red;
}
.none {
display: none;
}
Последний элемент 'none':<br>
<ul>
<li class="menuElement none">Element10</li>
<li class="menuElement">Element9</li>
<li class="menuElement">Element8</li>
<li class="menuElement">Element7</li>
<li class="menuElement">Element6</li>
<li class="menuElement">Element5</li>
<li class="menuElement">Element4</li>
<li class="menuElement">Element3</li>
<li class="menuElement">Element2</li>
<li class="menuElement">Element1</li>
</ul>
Последний элемент НЕ 'none':<br>
<ul>
<li class="menuElement">Element10</li>
<li class="menuElement">Element9</li>
<li class="menuElement">Element8</li>
<li class="menuElement">Element7</li>
<li class="menuElement">Element6</li>
<li class="menuElement">Element5</li>
<li class="menuElement">Element4</li>
<li class="menuElement">Element3</li>
<li class="menuElement">Element2</li>
<li class="menuElement">Element1</li>
</ul>
с помощью css это сделать нельзя. на :last-child нельзя наложить условие (это всегда последний элемент видимый или нет).
можно сделать при помощи селекторов jquery. файктически это означает, что при помощи javascript.
также можно сделать на ванильном javascript (кода будет чуть больше). переделал пример ниже под него.
var items = document.querySelectorAll('.menuElement:not(.none)');
if (items.length > 0)
items[items.length-1].className += ' last';
.menuElement.last {
color: red;
}
.none {
display: none;
}
<ul>
<li class="menuElement">Element1</li>
<li class="menuElement">Element2</li>
<li class="menuElement">Element3</li>
<li class="menuElement">Element4</li>
<li class="menuElement">Element5</li>
<li class="menuElement">Element6</li>
<li class="menuElement">Element7</li>
<li class="menuElement">Element8</li>
<li class="menuElement">Element9</li>
<li class="menuElement none">Element10</li>
</ul>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
пользовался долго Firefox и теперь перешел на Chrome и сталкнулся с нехваткой такой маленькой мелочи
Всем приветПытаюсь разобраться с вебпаком, в частности с загрузкой изображений
Сайт написан на bootsrap 3, появилась задача редизайнаВозник вопрос, как лучше реализовать синею секцию, чтобы была стыковка с основной сеткой