У меня была похожая дилемма, и вот как я обошел ее. Мое решение похоже на то, что другие опубликовали в отношении использования более конкретных селекторов для соответствующего соответствия.
Предположим, у меня есть следующий вложенный диапазон, и я не хочу, чтобы стили каскадно к нему подходили.
<span class="boldText">
some bolded text
<span class="italicText">some italic text</span>
</span>
Другими словами, я хочу, чтобы он выглядел как " какой-то жирный текст некоторый курсивный текст " вместо " некоторый жирный текст некоторый курсивный текст "(и наоборот). Установив определенный селектор для очистки этих стилей на вложенных дочерних элементах, этого можно достичь следующим образом.
span span {
font-weight:normal; /*clear bold style from 'cascading' by specifying it*/
font-style:normal; /*clear italic style from 'cascading' by specifying it*/
}
.boldText {
font-weight:bold;
}
.italicText {
font-style:italic;
}
Селектор span span может гарантировать, что для вложенного диапазона будут установлены все стили, необходимые для переопределения обычно каскадного стиля из родительского диапазона, возвращая их в «нормальное» состояние без стилей. Затем будут применены конкретные классы boldText или italicText на самих участках, которые затем будут предоставлять содержимое этого диапазона либо жирным шрифтом, либо курсивом (или обоими), поскольку они являются более конкретными селекторами.
Удобство здесь в том, что мне больше не нужно беспокоиться о стиле форматирования шрифта при родительском каскадировании дочернего элемента. Я могу просто добавить соответствующий класс форматирования к любому диапазону и применить только этот класс без родительского.
Я мог бы так же легко добавить классы ".clearBold" и ".clearItalic" ко всем вложенным диапазонам, но это чище и привело к уменьшению кода в моем приложении.