Статьи / Веб-разработка / CSS по шагам / Шаг 9. Контекстные селекторы
Шаг 9. Контекстные селекторыПросмотров: 1758
15.04.2009 16:19
 
При создании веб-страницы часто приходится вкладывать одни теги внутрь других. Чтобы стили для этих тегов использовались корректно, помогут селекторы, которые работают только в определенном контексте. Например, задать стиль для тега <B> только когда он располагается внутри контейнера <P>. Таким образом можно одновременно установить стиль для отдельного тега, а также для тега, который находится внутри другого.

Контекстный селектор состоит из простых селекторов разделенных пробелом. Так, для селектора тега синтаксис будет следующий.

Тег1 Тег2 { ... }

В этом случае стиль будет применяться к Тегу2 когда он размещается внутри Тега1, как показано ниже.

<Тег1>
<Тег2> ... </Тег2>
</Тег1>


Использование контекстных селекторов продемонстрировано в примере 9.1.

Пример 9.1. Контекстные селекторы

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>Контекстные селекторы</title>
  <style type="text/css">
   P B {
    font-family: Times, serif; /* Семейство шрифта */
    font-weight: bold; /* Жирное начертание */
    color: navy; /* Синий цвет текста */
   }
  </style>
</head>
<body>
   <div><b>Жирное начертание текста</b></div>
   <p><b>Одновременно жирное начертание текста и выделенное цветом</b></p>
</body>
</html>


В данном примере показано обычное применение тега <B> и этого же тега, когда он вложен внутрь параграфа <P>. При этом меняется цвет и шрифт текста, как показано на рис. 9.1.


Рис. 9.1. Оформление текста в зависимости от вложенности тегов

Замечание

Не обязательно контекстные селекторы содержат только один вложенный тег. В зависимости от ситуации допустимо применять два и более последовательно вложенных друг в друга тегов.

Более широкие возможности контекстные селекторы дают при использовании идентификаторов и классов. Это позволяет устанавливать стиль только для того элемента, который располагается внутри определенного класса, как показано в примере 9.2.

Пример 9.2. Использование классов

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  <title>Контекстные селекторы</title>
  <style type="text/css">
   A {
    color: green; /* Зеленый цвет текста для всех ссылок */
   }
   .menu {
    padding: 7px; /* Поля вокруг текста */
    border: 1px solid #333; /* Параметры рамки */
    background: #fc0; /* Цвет фона */
   }
   .menu A {
    color: navy; /* Темно-синий цвет ссылок */
   }
   .menu A:hover {
    color: red; /* Красный цвет ссылок при наведении на нее */
   }
  </style>
</head>
<body>
  <div class="menu">
   <a href="link1.html">Русская кухня</a> |
   <a href="link2.html">Украинская кухня</a> |
   <a href="link3.html">Кавказская кухня</a>
  </div>
  <p><a href="link4.html">Другие материалы по теме</a></p>
</body>
</html>


Результат данного примера показан на рис. 9.2.


Рис. 9.2. Ссылки разных цветов

В данном примере используется два типа ссылок. Первая ссылка, стиль которой задается с помощью селектора A, будет действовать на всей странице, а стиль второй ссылки (.menu A) применяется только к ссылкам внутри элемента с классом menu.

При таком подходе легко управлять стилем одинаковых элементов, вроде изображений и ссылок, оформление которых должно различаться в разных областях веб-страницы.

Автор: Влад Мержевич
Источник: htmlbook.ru