Я действительно нашел 3 способа сделать это:
Решение 1
.parent > p:not(.green_guys) {
text-decoration: line-through; /* or whatever you like */
}
Демо: https://jsbin.com/cafipun/edit?html,css,output
ПРОФИ: быстро ипросто.
CONS: вам нужно знать родительский селектор (чтобы это не было сверхпортативным решением).
Solution 2
p ~ p:not(.green_guys),
p:first-child:not(.green_guys) {
text-decoration: line-through; /* or whatever you like */
}
Демонстрация: https://jsbin.com/seripuditu/edit?html,css,output
PROS: нет необходимости знать родительский селектор (это может быть очень полезно для использования в общих случаях).
CONS: рискует быть слишком универсальным(будьте осторожны, например, если у вас есть другие p вокруг вашего HTML!).
Решение 3
Небольшой вариант Решение 2 (чтобы избежать CONS ).В этом случае вы указываете селектор брата, чтобы получить более конкретный контекст.
p.siblings ~ p:not(.green_guys),
p.siblings:first-child:not(.green_guys) {
text-decoration: line-through; /* or whatever you like */
}
Демонстрация: https://jsbin.com/hakasek/edit?html,css,output
PROS: это переносимое решение, нет необходимости знатьродительский селектор (он может быть очень хорош в общих случаях), и не нужно беспокоиться о конфликте с другими элементами.
CONS: все братья и сестры должны быть четко определены (например, с классом или атрибутом).