ul > li {
// затронет только не li, которые находятся в ul (ol не затронет)
}
table > tr:nth-child(2) {
// затронет только каждую вторую строку таблицы
}
div + p {
// затронет только те теги p, которые идут сразу после div
}
div > span:first-of-type {
// затронет только первый элемент span внутри тега div
}
div[class~="imageable"] {
// затронет только те div, в классе которых присутствует слово imageable
// да, иногда использую классы, в основном для иконок
}
Куда удобнее читать подобный код, чем код, в котором наследуются классы, потому что никогда не знает, к какому элементу относится данный класс. А здесь сразу понятно, какие элементы буду затронуты.