Я использую псевдоэлемент :after
, чтобы отобразить украшение (треугольник) после блока (<li>
в моем случае). Идея состоит в том, чтобы отличить выбранный в настоящий момент li
от других.Измените CSS: после псевдоэлемента, используя jQuery
HTML, следующим образом:
<ul>
<li class="active" style="background-color: hsl(108, 60%, 50%)">One</li>
<li style="background-color: hsl(36, 60%, 50%)">Two</li>
<li style="background-color: hsl(252, 60%, 50%)">Three<li>
</ul>
и CSS:
ul li {
width: 300px;
height: 30px;
border: 1px dashed;
position: relative;
}
li.active::after {
content: " 0020";
display: block;
font-size: 0px;
position: absolute;
left:100%;
top: 0%;
width: 0px;
height: 0px;
background: transparent;
border: 17px solid transparent;
border-left-color: #FF3900;
}
Я хочу, чтобы изменить атрибут border-left-color
стиля li.active::after
псевдо элемента в соответствии с background-color
из <li>
элемент с class=active
.
я придумал следующий JQuery:
$("ul li").click(function() {
$("ul li").removeClass("active");
$(this).addClass("active");
$("li.active::after").css('border-left-color', $(this).css('background-color'));
});
Это не работает, как ожидалось. Любая помощь приветствуется.
Я не знаю, если это copypasta/перепишем ошибка, но ваш 'li.active :: active' отсутствует' "' в начале и конец. – Albzi
JQuery не может манипулировать псевдоэлементом ': after', поскольку псевдомерные элементы не отображаются в DOM –
@BeatAlex Спасибо за ловушку. Это опечатка. Однако это не устраняет мою проблему. –