Ответ 1
В настоящий момент нет способа CSS, позволяющего найти элемент, за которым следует другой конкретный элемент.
Возможно, скоро появится CSS Relational Pseudo-class :has()
, который сделает то, что вы хотите. Это в настоящее время находится в CSS Selectors Level 4 Draft и выглядит маловероятным для скорого развертывания в любых браузерах.
Ниже приведена демонстрация, но не ожидайте, что она будет работать до тех пор, пока черновик Selectors 4 не будет работать в рабочем проекте.
Следите за CanIUse, чтобы увидеть, когда он станет доступным.
ul li:has(+ .hidden:last-child),
ul li:last-child:not(.hidden) {
background: red;
}
<ul>
<li>
<button>1</button>
</li>
<li>
<button>2</button>
</li>
<li class="hidden">
<button>3</button>
</li>
</ul>