И пруф: https://developer.mozilla.org/en/Writing_Efficient_CSS
The style system matches rules by starting with the key selector, then moving to the left (looking for any ancestors in the rule’s selector). As long as the selector’s subtree continues to check out, the style system continues moving to the left until it either matches the rule, or abandons because of a mismatch.
Никогда не задумывался над эффективностью CSS - пусть верстальщики парятся.
Но всё-таки мне казалось очевидным следующее. Есть правило:
ul#id li span {красненьким в полосочку}
По нормальному, имхо, браузер должен найти сначала ul с заданным ID (быстрая операция), вынуть все его LI, потом поискать уже в этом значительно уменьшеном дереве спаны.
Из ссылки же следует, что он сначала вытащит ваще-ваще все спаны из документа, проверит для каждого, нет ли где-то из его предков LI, а потом ещё для каждого из этих LI будет искать в предках ul#id.
Есть знатоки, чтобы объяснить пиздец это или не пиздец?