Обычно поддерживающие стили броузеры применяют определенные на уровне документа или встроенные стили к тегам везде, где они обнаруживаются в тексте документа, безотносительно к контексту. Однако стандарт CSS2 определяет способ применения стиля только к тегам, находящимся в определенном контексте, например содержащим
ся внутри другого тега.
Чтобы создать контекстный селектор, перечислите теги в том порядке, в котором они должны вкладываться в документ, начиная с самого внешнего. Когда броузер встретит такой порядок вложения, стилевое правило будет применено к последнему тегу списка.
Вот, например, как можно использовать контекстные стили для определения классической последовательности нумерации в упорядоченных списках: заглавные латинские буквы для самого внешнего уровня, римские цифры в верхнем регистре для следующего, затем арабские цифры и строчные латинские буквы для самого внутреннего уровня:
ol li {list style: upper roman}
ol ol li {list style: upper alpha}
ol ol ol li {list style: decimal}
ol ol ol ol li {list style: lower alpha}
Следуя приведенной таблице стилей, поддерживающий стили броузер, встречая тег <li>, вложенный в один тег <ol>, применяет значение upper roman для свойства list-style тега <li>. Когда тот же броузер видит тег <li>, вложенный в два тега <ol>, он использует значение upper-alpha свойства list-style. Вложите тег <li> в три и четыре тега <ol>, и вы увидите соответственно decimal и lower-alpha стили нумерации.
Подобным образом можно устанавливать некий стиль только для тегов, находящихся в определенном контексте. Следующее определение стиля, например, наделит красным цветом содержимое только тех тегов логического подчеркивания (<em>), которые встречаются внутри заголовков первого уровня (в тегах <h1>), и никаких других:
h1 em {color: red}
Если существует противоречие между двумя контекстными стилями, более специфический контекст побеждает.
В селекторный список могут входить как селекторы, являющиеся именами тегов, так и контекстные селекторы, при этом все они должны отделяться друг от друга запятыми. Все элементы селекторного списка подчиняются общему для них стилевому правилу. Пример:
h1 em, p strong, address {color: red}
означает, что вы увидите красный цвет всюду, где тег <em> содержится в теге <h1> или тег <strong> появляется внутри тега <p>, а также в содержимом тега <adress>.
Для того чтобы было применено контекстное правило, последовательность вложений не обязана точно совпадать с контекстным селектором. К примеру, если тег <strong> вложен в тег <ul>, входящий, в свою очередь, в тег <p>, он все еще подчиняется контекстному правилу p strong, определенному выше. Если некоторое вложение тегов подходит для
применения нескольких стилевых правил, употребляется более специфичное. В частности, если вы определили два контекстных селектора:
p strong {color: red}
p ul strong {color: blue}
и использовали в документе последовательность <p><ul><strong>, будет применено второе, более специфическое, правило, и содержимое тега <strong> будет синим.