В CSS2.1 элемент может иметь не более одного псевдоэлемента любого типа в любое время. (Это означает, что элемент может иметь как a, так :beforeи :afterпсевдоэлемент - просто он не может иметь более одного элемента каждого типа.)
В результате, когда у вас есть несколько :beforeправил, соответствующих одному и тому же элементу, все они будут каскадироваться и применяться к одному :beforeпсевдоэлементу, как и к обычному элементу. В вашем примере конечный результат выглядит так:
.circle.now:before {
content: "Now";
font-size: 19px;
color: black;
}
Как видите, contentвступит в силу только объявление с наивысшим приоритетом (как уже упоминалось, последнее) - остальные объявления отбрасываются, как и в случае с любым другим свойством CSS.
Это поведение описано в разделе « Селекторы» CSS2.1 :
Псевдоэлементы ведут себя так же, как настоящие элементы в CSS, за исключением описанных ниже и в других местах.
Это означает, что селекторы с псевдоэлементами работают так же, как селекторы для обычных элементов. Это также означает, что каскад должен работать точно так же. Странно, но CSS2.1 кажется единственным справочником; ни css3-selectors, ни css3-cascade вообще не упоминают об этом, и еще неизвестно, будет ли это разъяснено в будущей спецификации.
Если элемент может соответствовать нескольким селекторам с одним и тем же псевдоэлементом, и вы хотите, чтобы все они каким-то образом применялись, вам нужно будет создать дополнительные правила CSS с комбинированными селекторами, чтобы вы могли точно указать, что браузер должен делать в этих случаи. Я не могу привести здесь полный пример, включая это contentсвойство, поскольку неясно, например, должен ли быть первым символ или текст. Но для этого комбинированного правила вам нужен селектор .circle.now:beforeили .now.circle:before- какой бы селектор вы ни выбрали, это личное предпочтение, поскольку оба селектора эквивалентны, это только значение contentсвойства, которое вам нужно будет определить самостоятельно.
Если вам все еще нужен конкретный пример, посмотрите мой ответ на этот аналогичный вопрос .
Спецификация наследия CSS3-контент содержит раздел о вставке несколько ::beforeи ::afterпсевдо-элементов с использованием обозначений , которая совместима с CSS2.1 каскадом, но обратите внимание , что этот конкретный документ устарел - он не обновлялись с 2003 года, и никто не имеет реализовали эту функцию в последнее десятилетие. Хорошая новость в том, что заброшенный документ активно переписывается под видом css-content-3 и css-pseudo-4 . Плохая новость заключается в том, что функция множественных псевдоэлементов нигде не встречается ни в одной из спецификаций, вероятно, опять же из-за отсутствия интереса со стороны разработчиков.
circleи классуnow, оба правила применяются к:beforeпсевдоэлементу элемента, но нормальный CSS подразумевает, что только одна изcontentнастроек может вступить в силу (по обычным каскадным правилам). Дело в том, чтоcontentне накапливается.