@Pazzetif

Как заменить :before через JS?

Приветствую. Собственно имеется список ul, у которого через :before заданы символы маркера
.main-content ul li:before {
    position: absolute;
    left: 1px;
    content: '';
    width: 8px;
    height: 8px;
    background: #666666;
    line-height: 8px;
    border-radius: 50%;
    text-align: center;
    margin-top: 7px;
    margin-left: 10px;

}

Мне нужно проверить если у ul есть класс "list-plus", примерно такой код:
if ( $("ul").hasClass("list-plus") ) {

}

То ul с классом "list-plus" нужно заменить на:
.main-content ul.list-plus li:before{
    content: " ";
    background-size: cover;
    background-image: url("../img/plus.svg");
    width: 1.5rem;
    height: 1.5rem;
    position: absolute;
    left: 1px;
}

По сути мне нужно сменить маркеры, если у ul есть определенный класс.
  • Вопрос задан
  • 1395 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
JS не может менять свойства псевдоэлементов, но может изменять класс у родительского элемента.
Пропишите в css два правила, .main-content ul li:before {} и .main-content ul.list-plus li:before (ниже) а из js только меняйте класс list-plus.

Обратите внимание, что у вас сейчас в .main-content ul li:before {} есть свойство margin-top: 7px;, например, и оно НЕ ОТМЕНЯЕТСЯ при добавлении list-plus.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dramiel007
как по мне, здесь не нужен js код, стили для :before должны замениться, поскольку у
.main-content ul.list-plus li:before {}
приоритет использования выше, чем у
.main-content ul li:before {}

Я так понимаю, что маркеры у вас поменялись, но всё съехало?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы