У меня есть ситуация DOM, которая выглядит так:
-
A является предком B, который в свою очередь является предком C
-
Изначально A имеет стили, наследующие B и C
-
Я хочу временно выделить B, выделив выделенный класс
... однако...
-
Я хочу "избежать" выделения на C, чтобы он как можно меньше менялся
Кажется, это невозможно в рамках каскадной парадигмы CSS. Единственный способ "отменить" стиль - применить стиль переопределения. Моя проблема заключается в том, что код выделения находится в плагине, который хочет хорошо играть с произвольной страницей существующего CSS... мои селектора выглядят следующим образом:
/* http://www.maxdesign.com.au/articles/multiple-classes/ */
.highlighted.class1 {
background-color: ...
background-image: ...
...
}
.highlighted.class2 {
...
}
/* ... */
.highlighted.classN {
...
}
Фон является сложным... потому что, хотя это не унаследованное свойство CSS, изменение фона предка может изменить внешний вид потомков (если у них есть прозрачный фон). Таким образом, это пример того, что вызывает такое нарушение, которое я пытаюсь отрицать.: -/
Есть ли примеры того, как люди подавляют наследование изменений таким образом? Возможно, используя трюки, такие как кэширование вычисленных стилей? Я ищу любую технику по умолчанию, которая может быть хотя бы немного умнее, чем крючок на уровне функции, который говорит: "Эй, плагин выделил это node... делает то, что вам нужно, чтобы визуально компенсировать".
UPDATE. Я создал базовый JsFiddle этого сценария, чтобы сделать обсуждение более ясным: