Селектора CSS сопоставляются движками браузера справа налево. Поэтому они сначала находят детей, а затем проверяют своих родителей, чтобы увидеть, соответствуют ли они остальным частям правила.
- Почему это?
- Это только потому, что спецификация говорит?
- Это влияет на возможный макет, если он был оценен слева направо?
Для меня самым простым способом было бы использовать селектор с наименьшим количеством элементов. Поэтому сначала идентификаторы (так как они должны возвращать только один элемент). Тогда возможно классы или элемент, который имеет наименьшее количество узлов - например, на странице может быть только один диапазон, поэтому перейдите непосредственно к этому node с любым правилом, которое ссылается на диапазон.
Вот некоторые ссылки, подтверждающие мои претензии.
- http://code.google.com/speed/page-speed/docs/rendering.html
- https://developer.mozilla.org/en/Writing_Efficient_CSS
Похоже, что это делается таким образом, чтобы не смотреть на всех детей родителей (которых могло быть много), а не на всех родителей ребенка, который должен быть одним. Даже если DOM является глубоким, он будет рассматривать только один node за уровень, а не несколько в RTL-сопоставлении. Легче/быстрее оценить CSS-селектора LTR или RTL?