Каков приоритет оператора + в селекторах CSS? - PullRequest
29 голосов
/ 15 ноября 2011

Из спецификации селектора CSS :

E + F соответствует любому элементу F, которому непосредственно предшествует родственный элемент E.

А как насчет приоритета оператора? Что соответствует #id1 #id2 + #id3? Как насчет #id1 + #id2 #id3?

Есть ли селектор, который означает #id1 (#id2 + #id3) или (#id1 + #id2) #id3? (Я предполагаю, что ( и ) действительно не разрешены в селекторах CSS, я не вижу их в спецификации)

1 Ответ

44 голосов
/ 15 ноября 2011

Каждая последовательность простых селекторов и комбинаторов читается браузерами справа налево, линейно. Комбинаторы никак не влияют на порядок. Крайний правый селектор, после последнего комбинатора, если он есть, известен как ключевой селектор (см. Ссылки ниже для получения дополнительной информации), и он определяет элемент, к которому применяется правило (также известный как * 1003). * субъект селектора, хотя обратите внимание, что ключевой селектор не всегда может представлять тему селектора, поскольку разные приложения реализуют селекторы по-разному).

Селектор #id1 #id2 + #id3 означает

Выбрать элемент #id3
если это непосредственно следует за братом #id2
это потомок #id1.

Структура DOM, в которой #id3 будет соответствовать селектору, будет выглядеть так:

#id1
  ... any level of nesting
    #id2
    #id3

Пока #id1 + #id2 #id3 означает

Выбрать элемент #id3
если это потомок #id2
это непосредственно следует как родной брат #id1.

И структура DOM, в которой #id3 будет соответствовать селектору, будет выглядеть так:

#id1
#id2
  ... any level of nesting
    #id3

Обратите внимание на разницу в положении элемента #id2 в этой структуре DOM по сравнению с приведенной выше.

Здесь нет особой проблемы приоритета, поскольку комбинаторы потомков и братьев и сестер идут в DOM в разных направлениях. Обе последовательности селектора читаются справа налево в любом случае.

Похожие ответы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...