Css первый дочерний элемент

Описание селектора:

  • Выполняемая задача — выбор дочерних элементов.
  • Обозначение — цепочка: простой селектор родителя, комбинатор «>», простой селектор дочернего элемента.
  • Пример использования:

Зададим отступ слева для списка, непосредственно вложенного в элемент с классом content (на списки второго уровня вложенности эти правила не подействуют):

Подробнее про селектор дочернего элемента

Основное отличие селектора дочернего элемента от рассмотренного ранее селектора потомка — тот факт, что если селектор потомка выбирает все потомки, независимо от уровня вложенности, то селектор дочернего элемента выбирает потомков только первого уровня — то есть непосредственно вложенные элементы. Например, напишем такой CSS:

…и такой код:

На span, который находится внутри p (строка 4) заданные стили не распространяются. Глубина вложения играет роль!

Ограничение


IE6 не понимает этот селектор. Если ты все еще вынужден поддерживать эту допотопную версию браузера — почитай статью Селектор потомков > для IE6. Там ты найдешь соответствующее лекарство.

Область применения

Применяется, как правило, для уменьшения объема CSS, там, где нужно разделить стили непосредственно вложенных элементов и элементов второго (и более) уровня вложенности. Например, при оформлении вложенных списков (допустим, выпадающих меню).

Еще одно применение — специфическое оформление элементов с известными заранее родителями:

Если тег header будет использован в HTML еще где-то кроме шапки (например, для выделения заголовка статьи), то он не унаследует левые для него стили шапки сайта.

Такой прием позволяет не задавать класс (или id) для элемента header и, тем самым, хоть немного, а упростить HTML код.

Следующая статья — Селектор сестринского элемента.

xiper.net

Еще один статический псевдокласс, :first-child, применяется для выбора элементов, представляющих собой первые дочерние элементы других элементов. Назначение этого псевдокласса очень легко понять неправильно, поэтому требуется развернутый пример. Рассмотрим следующую разметку:

В данном примере первые дочерние элементы – это первый p, первый li и элементы strong и em. По следующим двум правилам:

p:first-child {font-weight: bold;}
li:first-child {text-transform: uppercase;}


получается результат.
Первое правило выделяет полужирным шрифтом любой элемент p, который является первым дочерним элементом другого элемента. Второе правило переводит в верхний регистр текст любого элемента li, являющегося первым дочерним элементом другого элемента (которыми в HTML должны быть элементы ol или ul).

Самая распространенная ошибка – полагать, что такой селектор, как p:first-child, выберет первый дочерний элемент элемента p. Однако вспомните природу псевдоклассов, которая состоит в подключении к ассоциированному с псевдоклассом элементу фантомного класса некоторого типа. Если бы было необходимо добавить в разметку реальные классы, это выглядело бы так:

Следовательно, для того чтобы выбрать элементы em, являющиеся первыми дочерними элементами другого элемента, нужна запись em:first-child. Этот селектор позволяет, например, оформлять первый элемент списка, первый абзац элемента div или первый элемент td в строке таблицы. Internet Explorer для Windows вплоть до версии IE6 не поддерживает :first-child, а IE7 поддерживает :first-child.

Css первый дочерний элемент Выбор дочерних элементов
Css первый дочерний элемент Выбор конкретного атрибута

Css первый дочерний элемент Выбор между селектором классов и селектором идентификаторов
Css первый дочерний элемент Выбор на основании конкретного значения атрибута
Css первый дочерний элемент Выбор по частичному значению атрибута

oooportal.ru

Вопросы для проверки

1. Какой цвет будет у жирного курсивного текста в коде

<p>Нормы освещённости построены на <b><i>основе классификации зрительных работ</i></b> по определенным количественным признакам.</p>

При использовании следующего стиля?

P { color: green; }
B {color: blue; }
I {color: orange; }
B > I { color: olive; }
P > I { color: yellow; }

  1. Зелёный.
  2. Синий.
  3. Оранжевый.
  4. Оливковый.
  5. Жёлтый.

2. Какой элемент является родительским для тега <TITLE>?

  1. <HEAD>
  2. <BODY>
  3. <HTML>
  4. <META>
  5. <!DOCTYPE>

3. Для какого тега элемент <!DOCTYPE> выступает родителем?

  1. <HTML>
  2. <TITLE>
  3. <BODY>
  4. <HEAD>
  5. Ни для одного тега.

Ответы

1. Оливковый.

2. <HEAD>

3. Ни для одного тега.

htmlbook.ru

Overflow: Hidden

Вы когда-нибудь замечали, что когда вы делаете плавающими все дочерние узлы в div, родитель занимает нулевое пространство? Например, в редакторе кода добавим в тэг body следующее:

А теперь давайте добавим немного CSS, чтобы имитировать типичный веб-сайт.

Выше мы просто устанавливаем цвета фона и плавающей боковой панели и основных div’ов слева и справа соответственно. Обратите внимание на «padding-bottom: 2em;». Это позволит нам видеть красный фон в самом низу, правильно? Посмотрите страницу на своем браузере и вы увидите:

Overflow

Куда девался красный фон? Почему он не отображается?

Решение проблемы

Когда вы делаете плавающими все дочерние элементы, родитель, по существу, не занимает никакого места. Чтобы нагляднее продемонстрировать этот факт, давайте зададим контейнеру произвольную высоту 50px, а затем уменьшим непрозрачность дочерних div’ов настолько, чтобы увидеть внизу красный фон.

Обновите ваш браузер и вы увидите:


Overflow

Странно. Мы указали высоту 50px для нашего контейнера div, однако основной (main) и боковой (sidebar ) div’ы явно переполняют границы родителя (container), выглядят неправильно и ведут себя как хотят.

После следующего обновления мы увидим:

Overflow

Ну, это нам частично помогло. Теперь уже не нужно беспокоиться о дочерних элементах, не слушающихся своего родителя. Но на самом деле это не так уж помогло решить нашу проблему.

«Старайтесь, как только возможно избежать установки высоты. Есть более умный метод».

Решение – убрать свойство высоты контейнера. Удалите следующее свойство.

Последнее обновление и, похоже, наша проблема решена.

Overflow

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

Шлифовка

Вышеуказанный метод сработает в большинстве случаев. Однако давайте представим и другой вариант. Например, мы хотим поместить изображение на границе нашего контейнера так, что оно будет перекрывать его. Вы много раз видели этот эффект. Для примера просто используем изображение круга с прозрачным фоном. На настоящем сайте оно может представлять броскую клавишу типа «Купите сейчас» или «Подпишитесь».


Overflow

Позиционирование круга

Давайте с помощью CSS установим изображение в правую верхнюю часть нашего «веб-сайта» так, чтобы оно перекрывало края. Вот что нам нужно:

Overflow

Во-первых, мы делаем ссылку на изображение внутри нашего HTML.

Далее возвращаемся к таблице стилей и добавляем следующие стили.

Контекст позиционирования

Кое-кто может подумать, что это поместит изображение прямо над правым краем контейнера div. Однако будет не прав.

Оттого, что мы не определили контекст позиционирования, вместо него будет использоваться все окно браузера.

Overflow

Очевидно, это не то, что мы хотели. Чтобы определить контекстом позиционирования наш контейнер div, нужно просто добавить «position: relative;» к #container. Как только мы это сделаем, изображение будет позиционироваться относительно нашего div с id=container, а не относительно окна браузера.

Overflow

А сейчас что за проблема?


Но теперь у нас новая проблема! Оттого, что мы применили overflow:hidden к нашему контейнер div, мы, фигурально выражаясь, сами себе прострелили ногу. Как мы можем пересечь границу и назвать элемент, если overflow установлено в hidden? Может быть, просто принять тот факт, что этот конкретный вебсайт не будет разрастаться? Абсолютно нет. В таких случаях стоит применять другой метод.

Прием Clearfix

При помощи этого метода мы используем CSS для добавления содержимого после нашего контейнера div. Это созданное содержимое затем перекроет наш div, таким образом заставив его вмещать дочерние элементы. После этого, очевидно, нам не нужно видеть его содержимое, так что мы должны быть уверены, что спрятали его от просмотра.

Вернитесь в свою таблицу стилей, удалите «overflow: hidden;» из контейнера div, а затем добавьте следующее:

Может показаться на первый взгляд сложно, но уверяю вас, что это довольно просто.

Overflow

webformyself.com

Виды каскадных таблиц стилей и их специфика

  • Содержание:
  • 1. Виды таблиц стилей
  • 2. Виды селекторов
  • 3. Комбинация селекторов
  • 4. Группировка селекторов
  • 5. Наследование и каскад

1. Виды таблиц стилей

1.1. Внешняя таблица стилей

Внешняя таблица стилей представляет собой текстовый файл с расширением .css, в котором находится набор CSS-стилей элементов. Файл создаётся в редакторе кода, так же как и HTML-страница. Внутри файла могут содержатся только стили, без HTML-разметки. Внешняя таблица стилей подключается к веб-странице с помощью тега <link>, расположенного внутри раздела <head></head>. Такие стили работают для всех страниц сайта.

К каждой веб-странице можно присоединить несколько таблиц стилей, добавляя последовательно несколько тегов <link>, указав в атрибуте тега media назначение данной таблицы стилей. rel="stylesheet" указывает тип ссылки (ссылка на таблицу стилей).

<head>  <link rel="stylesheet" href="css/style.css">  <link rel="stylesheet" href="css/assets.css" media="all">  </head>

Атрибут type="text/css" не является обязательным по стандарту HTML5, поэтому его можно не указывать. Если атрибут отсутствует, по умолчанию используется значение type="text/css".


1.2. Внутренние стили

Внутренние стили встраиваются в раздел <head></head> HTML-документа и определяются внутри тега <style></style>. Внутренние стили имеют приоритет над внешними, но уступают встроенным стилям (заданным через атрибут style).

<head>  <style>  h1,   h2 {  color: red;  font-family: "Times New Roman", Georgia, Serif;  line-height: 1.3em;  }  </style>  </head>  <body>  ...  </body>

1.3. Встроенные стили

Когда мы пишем встроенные стили, мы пишем CSS-код в HTML-файл, непосредственно внутри тега элемента с помощью атрибута style:

<p style="font-weight: bold; color: red;">Обратите внимание на этот текст.</p>

Такие стили действуют только на тот элемент, для которого они заданы.

1.4. Правило @import

Правило @import позволяет загружать внешние таблицы стилей. Чтобы директива @import работала, она должна располагаться в таблице стилей (внешней или внутренней) перед всеми остальными правилами:

<style>  @import url(mobile.css);  p {  font-size: 0.9em;   color: grey;  }  </style>

Правило @import также используется для подключения веб-шрифтов:


@import url(https://fonts.googleapis.com/css?family=Open+Sans&subset=latin,cyrillic);

2. Виды селекторов

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

2.1. Универсальный селектор

Соответствует любому HTML-элементу. Например, * {margin: 0;} обнулит внешние отступы для всех элементов сайта. Также селектор может использоваться в комбинации с псевдоклассом или псевдоэлементом: *:after {CSS-стили}, *:checked {CSS-стили}.

2.2. Селектор элемента

Селекторы элементов позволяют форматировать все элементы данного типа на всех страницах сайта. Например, h1 {font-family: Lobster, cursive;} задаст общий стиль форматирования всех заголовков h1.

2.3. Селектор класса

Селекторы класса позволяют задавать стили для одного и более элементов с одинаковым именем класса, размещенных в разных местах страницы или на разных страницах сайта. Например, для создания заголовка с классом headline необходимо добавить атрибут class со значением headline в открывающий тег <h1> и задать стиль для указанного класса. Стили, созданные с помощью класса, можно применять к другим элементам, не обязательно данного типа.

<h1 class="headline">Инструкция пользования персональным компьютером</h1>
.headline {  text-transform: uppercase;   color: lightblue;  }

2.4. Селектор идентификатора

Селектор идентификатора позволяет форматировать один конкретный элемент. Идентификатор id должен быть уникальным и на одной странице может встречаться только один раз.

<div id="sidebar"></div>
#sidebar {  width: 300px;   float: left;  }

2.5. Селектор потомка

Селекторы потомков применяют стили к элементам, расположенным внутри элемента-контейнера. Например, ul li {text-transform: uppercase;} — выберет все элементы li, являющиеся потомками всех элементов ul.

Если нужно отформатировать потомки определенного элемента, этому элементу нужно задать стилевой класс:

p.first a {color: green;} — данный стиль применится ко всем ссылкам, потомкам абзаца с классом first;

p .first a {color: green;} — если добавить пробел, то будут стилизованы ссылки, расположенные внутри любого тега класса .first, который является потомком элемента <p>;

.first a {color: green;} — данный стиль применится к любой ссылке, расположенной внутри другого элемента, обозначенного классом .first.

2.6. Дочерний селектор

Дочерний элемент является прямым потомком содержащего его элемента. У одного элемента может быть несколько дочерних элементов, а родительский элемент у каждого элемента может быть только один. Дочерний селектор позволяет применить стили только если дочерний элемент идёт сразу за родительским элементом и между ними нет других элементов, то есть дочерний элемент больше ни во что не вложен.
Например, p > strong — выберет все элементы strong, являющиеся дочерними по отношению к элементу p.

2.7. Сестринский селектор

Сестринские отношения возникают между элементами, имеющими общего родителя. Селекторы сестринских элементов позволяют выбрать элементы из группы элементов одного уровня.

h1 + p — выберет все первые абзацы, идущие непосредственно за любым тегом <h1>, не затрагивая остальные абзацы;

h1 ~ p — выберет все абзацы, являющиеся сестринскими по отношению к любому заголовку h1 и идущие сразу после него.

2.8. Селектор атрибута

Селекторы атрибутов выбирают элементы на основе имени атрибута или значения атрибута:

[атрибут] — все элементы, содержащие указанный атрибут, [alt] — все элементы, для которых задан атрибут alt;

селектор[атрибут] — элементы данного типа, содержащие указанный атрибут, img[alt] — только картинки, для которых задан атрибут alt;

селектор[атрибут="значение"] — элементы данного типа, содержащие указанный атрибут с конкретным значением, img[title="flower"] — все картинки, название которых содержит слово flower;

селектор[атрибут~="значение"] — элементы частично содержащие данное значение, например, если для элемента задано несколько классов через пробел, p[class~="feature"] — абзацы, имя класса которых содержит feature;

селектор[атрибут|="значение"] — элементы, список значений атрибута которых начинается с указанного слова, p[class|="feature"] — абзацы, имя класса которых feature или начинается на feature;

селектор[атрибут^="значение"] — элементы, значение атрибута которых начинается с указанного значения, a[href^="http://"] — все ссылки, начинающиеся на http://;

селектор[атрибут$="значение"] — элементы, значение атрибута которых заканчивается указанным значением, img[src$=".png"] — все картинки в формате png;

селектор[атрибут*="значение"] — элементы, значение атрибута которых содержит в любом месте указанное слово, a[href*="book"] — все ссылки, название которых содержит book.

2.9. Селектор псевдокласса

Псевдоклассы — это классы, фактически не прикрепленные к HTML-тегам. Они позволяют применить CSS-правила к элементам при совершении события или подчиняющимся определенному правилу. Псевдоклассы характеризуют элементы со следующими свойствами:

:link — не посещенная ссылка;

:visited — посещенная ссылка;

:hover — любой элемент, по которому проводят курсором мыши;

:focus — интерактивный элемент, к которому перешли с помощью клавиатуры или активировали посредством мыши;

:active — элемент, который был активизирован пользователем;

:valid — поля формы, содержимое которых прошло проверку в браузере на соответствие указанному типу данных;

:invalid — поля формы, содержимое которых не соответствует указанному типу данных;

:enabled — все активные поля форм;

:disabled — заблокированные поля форм, т.е., находящиеся в неактивном состоянии;

:in-range — поля формы, значения которых находятся в заданном диапазоне;

:out-of-range — поля формы, значения которых не входят в установленный диапазон;

:lang() — элементы с текстом на указанном языке;

:not(селектор) — элементы, которые не содержат указанный селектор — класс, идентификатор, название или тип поля формы — :not([type="submit"]);

:target — элемент с символом #, на который ссылаются в документе;

:checked — выделенные (выбранные пользователем) элементы формы.

2.10. Селектор структурных псевдоклассов

Структурные псевдоклассы отбирают дочерние элементы в соответствии с параметром, указанным в круглых скобках:

:nth-child(odd) — нечётные дочерние элементы;

:nth-child(even) — чётные дочерние элементы;

:nth-child(3n) — каждый третий элемент среди дочерних;

:nth-child(3n+2) — выбирает каждый третий элемент, начиная со второго дочернего элемента (+2);

:nth-child(n+2) — выбирает все элементы, начиная со второго;

:nth-child(3) — выбирает третий дочерний элемент;

:nth-last-child() — в списке дочерних элементов выбирает элемент с указанным местоположением, аналогично с :nth-child(), но начиная с последнего, в обратную сторону;

:first-child — позволяет оформить только самый первый дочерний элемент тега;

:last-child — позволяет форматировать последний дочерний элемент тега;

:only-child — выбирает элемент, являющийся единственным дочерним элементом;

:empty — выбирает элементы, у которых нет дочерних элементов;

:root — выбирает элемент, являющийся корневым в документе — элемент html.

2.11. Селектор структурных псевдоклассов типа

Указывают на конкретный тип дочернего тега:

:nth-of-type() — выбирает элементы по аналогии с :nth-child(), при этом берёт во внимание только тип элемента;

:first-of-type — выбирает первый дочерний элемент данного типа;

:last-of-type — выбирает последний элемент данного типа;

:nth-last-of-type() — выбирает элемент заданного типа в списке элементов в соответствии с указанным местоположением, начиная с конца;

:only-of-type — выбирает единственный элемент указанного типа среди дочерних элементов родительского элемента.

2.12. Селектор псевдоэлемента

Псевдоэлементы используются для добавления содержимого, которое генерируется с помощью свойства content:

:first-letter — выбирает первую букву каждого абзаца, применяется только к блочным элементам;

:first-line — выбирает первую строку текста элемента, применяется только к блочным элементам;

:before — вставляет генерируемое содержимое перед элементом;

:after — добавляет генерируемое содержимое после элемента.

3. Комбинация селекторов

Для более точного отбора элементов для форматирования можно использовать комбинации селекторов:

a[href][title] — выберет все ссылки, для которых заданы атрибуты href и title;

img[alt*="css"]:nth-of-type(even) — выберет все четные картинки, альтернативный текст которых содержит слово css.

4. Группировка селекторов

Один и тот же стиль можно одновременно применить к нескольким элементам. Для этого необходимо в левой части объявления перечислить через запятую нужные селекторы:

h1,   h2,   p,   span {  color: tomato;   background: white;  }

5. Наследование и каскад

Наследование и каскад — два фундаментальных понятия в CSS, которые тесно связаны между собой. Наследование заключается в том, что элементы наследуют свойства от своего родителя (элемента, их содержащего). Каскад проявляется в том, как разные виды таблиц стилей применяются к документу, и как конфликтующие правила переопределяют друг друга.

5.1. Наследование

Наследование является механизмом, с помощью которого определенные свойства передаются от предка к его потомкам. Спецификацией CSS предусмотрено наследование свойств, относящихся к текстовому содержимому страницы, таких как color, font, letter-spacing, line-height, list-style, text-align, text-indent, text-transform, visibility, white-space и word-spacing. Во многих случаях это удобно, так как не нужно задавать размер шрифта и семейство шрифтов для каждого элемента веб-страницы.

Свойства, относящиеся к форматированию блоков, не наследуются. Это background, border, display, float и clear, height и width, margin, min-max-height и -width, outline, overflow, padding, position, text-decoration, vertical-align и z-index.

Принудительное наследование

С помощью ключевого слова inherit можно принудить элемент наследовать любое значение свойства родительского элемента. Это работает даже для тех свойств, которые не наследуются по умолчанию.

Как задаются и работают CSS-стили

1) Стили могут наследоваться от родительского элемента (наследуемые свойства или с помощью значения inherit);

2) Стили, расположенные в таблице стилей ниже, отменяют стили, расположенные в таблице выше;

3) К одному элементу могут применяться стили из разных источников. Проверить, какие стили применяются, можно в режиме разработчика браузера. Для этого над элементом нужно щёлкнуть правой кнопкой мыши и выбрать пункт «Посмотреть код» (или что-то аналогичное). В правом столбце будут перечислены все свойства, которые заданы для этого элемента или наследуются от родительского элемента, а также файлы стилей, в которых они указаны, и порядковый номер строки кода.

nasledovanie-stiley
Рис. 2. Режим разработчика в браузере Google Chrome

4) При определении стиля можно использовать любую комбинацию селекторов — селектор элемента, псевдокласса элемента, класса или идентификатора элемента.

<div id="wrap" class="box clear"></div>
div {border: 1px solid #eee;}  #wrap {width: 500px;}  .box {float: left;}  .clear {clear: both;}

5.2. Каскад

Каскадирование — это механизм, который управляет конечным результатом в ситуации, когда к одному элементу применяются разные CSS-правила. Существует три критерия, которые определяют порядок применения свойств — правило !important, специфичность и порядок, в котором подключены таблицы стилей.

Правило !important

Вес правила можно задать с помощью ключевого слова !important, которое добавляется сразу после значения свойства, например, span {font-weight: bold!important;}. Правило необходимо размещать в конец объявления перед закрывающей скобкой, без пробела. Такое объявление будет иметь приоритет над всеми остальными правилами. Это правило позволяет отменить значение свойства и установить новое для элемента из группы элементов в случае, когда нет прямого доступа к файлу со стилями.

Специфичность

Для каждого правила браузер вычисляет специфичность селектора, и если у элемента имеются конфликтующие объявления свойств, во внимание принимается правило, имеющее наибольшую специфичность. Значение специфичности состоит из четырех частей: 0, 0, 0, 0. Специфичность селектора определяется следующим образом:

для id добавляется 0, 1, 0, 0;
для class добавляется 0, 0, 1, 0;
для каждого элемента и псевдоэлемента добавляется 0, 0, 0, 1;
для встроенного стиля, добавленного непосредственно к элементу — 1, 0, 0, 0;
универсальный селектор не имеет специфичности.

h1 {color: lightblue;} /*специфичность 0, 0, 0, 1*/  em {color: silver;} /*специфичность 0, 0, 0, 1*/  h1 em {color: gold;} /*специфичность: 0, 0, 0, 1 + 0, 0, 0, 1 = 0, 0, 0, 2*/  div#main p.about {color: blue;} /*специфичность: 0, 0, 0, 1 + 0, 1, 0, 0 + 0, 0, 0, 1 + 0, 0, 1, 0 = 0, 1, 1, 2*/  .sidebar {color: grey;} /*специфичность 0, 0, 1, 0*/  #sidebar {color: orange;} /*специфичность 0, 1, 0, 0*/  li#sidebar {color: aqua;} /*специфичность: 0, 0, 0, 1 + 0, 1, 0, 0 = 0, 1, 0, 1*/

В результате к элементу применятся те правила, специфичность которых больше. Например, если на элемент действуют две специфичности со значениями 0, 0, 0, 2 и 0, 1, 0, 1, то выиграет второе правило.

html5book.ru

Поддержка браузерами

7.0+

Описание

Комбинатор дочерних элементов обозначается знаком «больше чем» (>) и используется внутри селектора, между двумя простыми селекторами указывая взаимосвязь между ними. Задача данного селектора — выбор указанных дочерних элементов внутри родительского элемента, чтобы стало понятнее рассмотрим это на небольшом примере.

div > p { background-color: yellow; }

Селектор состоит из трёх частей: первым указывается простой селектор представляющий родительский элемент, после него указывается комбинатор дочерних элементов (>) и затем простой селектор, определяющий дочерний элемент. Комбинатор определяет взаимосвязь между двумя селекторами, показывая, что ко всем элементам <p>, которые являются дочерними по отношению к элементу <div> будет применен указанный стиль.

Пример:

  <!DOCTYPE html>  <html>   <head>   <style type="text/css">   div > span { background-color: yellow; }   </style>   </head>     <body>   <h1>Добро пожаловать!</h1>   <div>   <h2>Меня зовут Арни.</h2>   <span>Я живу в Дакбурге.</span>   </div>     <div>   <p><span>К этому элементу не будет применен стиль.</span></p>   </div>   <p>Моего кота тоже зовут Арни.</p>   </body>  </html>  

Результат данного примера:

puzzleweb.ru

<!DOCTYPE html> <html>  <head>  <meta charset="utf-8">  <title>Дочерние селекторы</title>  <style>  #menu {  margin: 0; padding: 0; /* Убираем отступы */  }  #menu > li {  list-style: none; /* Убираем маркеры списка */  width: 100px; /* Ширина элемента в пикселах */  background: #b3d9d2; /* Цвет фона */  color: #333; /* Цвет текста */  padding: 5px; /* Поля вокруг текста */  font-family: Arial, sans-serif; /* Рубленый шрифт */  font-size: 90%; /* Размер шрифта */  font-weight: bold; /* Жирное начертание */  float: left; /* Располагаем элементы по горизонтали */  }  li > ul {  list-style: none; /* Убираем маркеры списка */  margin: 0; padding: 0; /* Убираем отступы вокруг элементов списка */  border-bottom: 1px solid #666; /* Граница внизу */  padding-top: 5px; /* Добавляем отступ сверху */  }  li > a {  display: block; /* Ссылки отображаются в виде блока */  font-weight: normal; /* Нормальное начертание текста */  font-size: 90%; /* Размер шрифта */  background: #fff; /* Цвет фона */  border: 1px solid #666; /* Параметры рамки */  border-bottom: none; /* Убираем границу снизу */  padding: 5px; /* Поля вокруг текста */  }  </style>  </head>  <body>  <ul id="menu">   <li>Правка   <ul>   <li><a href="undo.html">Отменить</a></li>   <li><a href="cut.html">Вырезать</a></li>   <li><a href="copy.html">Копировать</a></li>   <li><a href="paste.html">Вставить</a></li>   </ul>   </li>   <li>Начертание  <ul>   <li><a href="bold.html">Жирное</a></li>   <li><a href="italic.html">Курсивное</a></li>   <li><a href="underline.html">Подчеркнутое</a></li>   </ul>   </li>  <li>Размер  <ul>   <li><a href="small.html">Маленький</a></li>   <li><a href="normal.html">Нормальный</a></li>   <li><a href="middle.html">Средний</a></li>   <li><a href="big.html">Большой</a></li>   </ul>   </li>   </ul>  </body> </html>

В данном примере дочерние селекторы требуются, чтобы разделить стиль элементов списка верхнего уровня и вложенные списки, которые выполняют разные задачи, поэтому стиль для них не должен пересекаться. Результат примера показан на рис. 2.

Использование дочерних селекторов

Рис. 2. Использование дочерних селекторов

webref.ru

Дочерние селекторы CSS

В предыдущей статье мы рассказывали о родственных связях между элементами HTML-документа, в том числе и о дочерних элементах. Давайте посмотрим на примере, как эти связи можно использовать в CSS.

Представьте, что вам нужно присвоить стиль только тем тегам <p>, которые являются дочерними по отношению к <body>, не затрагивая остальные <p> (например, <p>, дочерние по отношению к <div>).
Как это сделать? Очень просто: создадим дочерний селектор:

  body > p {  	color: #333;  }  

Обратите внимание на символ > после body. С помощью него вы указываете, что стиль применяется исключительно для дочерних тегов <p> родителя <body>. Если символ убрать, то стиль применится абсолютно ко всем тегам <p>, которые находятся внутри тега <body>, хотя они могут и не являться для него дочерними.

Дополнительные псевдоклассы

В CSS3 существует ряд псевдоклассов для работы с дочерними элементами. Ниже приведено описание каждого из них, примеры использования, а также отличия между псевдоклассами вида «child» и «of-type».

  • :first-child – с помощью этого псевдокласса можно применить стиль к указанному элементу веб-страницы, при условии, что он является первым дочерним элементом своего родителя;
  • :last-child – стиль применяется к указанному элементу веб-страницы при условии, что он является последним дочерним элементом своего родителя;
  • :nth-child – позволяет выбрать четные (even) и нечетные (odd) дочерние элементы; также с помощью данного псевдокласса можно стилизовать чередующиеся дочерние элементы, используя выражения вида an+b и числа;
  • :only-child – применяется к дочернему элементу при условии, что тот является единственным ребенком у родителя;
  • :first-of-type – стиль применяется к первому элементу указанного типа (даже если этот элемент не является первым дочерним для своего родителя и над ним находятся другие дочерние элементы других типов);
  • :last-of-type – работает точно так же, как и предыдущий псевдокласс, с той лишь разницей, что стиль применяется к последнему элементу указанного типа;
  • :nth-of-type – по принципу работы похож на :nth-child, но ориентируется на тип элемента;
  • :only-of-type – применяется к дочернему элементу указанного типа при условии, что тот является у родителя единственным ребенком своего типа.

Пример использования :first-child, :last-child и :nth-child

  <!-- HTML -->  <div>  <p>Первый ребенок</p>  <p>Второй ребенок</p>  <p>Третий ребенок</p>  <table>  <tr>   <td>Нечетный номер</td>  </tr>  <tr>   <td>Четный номер</td>  </tr>  <tr>   <td>Нечетный номер</td>  </tr>  <tr>   <td>Четный номер</td>  </tr>  </table>  <p>Последний ребенок</p>  </div>  

Стиль CSS:

  /* CSS */  p:first-child {   font-weight: bold;   text-transform: uppercase;  }    p:last-child {   font-style: italic;   font-size: 0.8em;  }    p:nth-child(3) {   color: red;  }    tr:nth-child(odd) {   background-color: #A2DED0;  }    tr:nth-child(even) {   background-color: #C8F7C5;  }  
Скриншот: применение псевдоклассов :first-child, :last-child и :nth-child
Скриншот: применение :first-child, :last-child и :nth-child

Мы написали CSS стиль для дочерних элементов простого HTML-документа, где тег <div> является родителем для тегов <p>, <table>. Разберем CSS по порядку.

Первое правило – p:first-child – касается элемента p: если он является первым дочерним элементом своего родителя, то к нему применяется стиль (в нашем случае это жирный шрифт и преобразование текста в верхний регистр). Если в данный HTML-код сразу после открывающего тега <div> добавить еще какой-нибудь тег (к примеру, <h2>), то стиль p:first-child уже не будет отображаться, поскольку <p> перестанет быть первым дочерним тегом. В данном случае первым дочерним элементом будет h2.

Всё то же самое происходит и с правилом p:last-child – стиль CSS будет применен к тегу <p> лишь тогда, когда он будет являться последним дочерним элементом своего родителя. Добавьте после <p> любой другой тег отличного типа и вы увидите, что правило p:last-child перестанет применяться.

Правило p:nth-child(3) работает для третьего дочернего тега <p> (об этом свидетельствует число 3 в скобках). Цвет шрифта для этого абзаца становится красным. Вы можете изменить число 3 (например, на 2) и посмотреть результат.

Правила tr:nth-child(odd) и tr:nth-child(even) работают для нечётных и чётных элементов tr соответственно. Вы можете увидеть результат на скриншоте, а также скопировать весь код и поэкспериментировать со стилями самостоятельно.

Пример использования :first-of-type, :last-of-type, :nth-of-type и :only-of-type

  <!-- HTML -->  <div>  <h2>Первый ребенок</h2>  <p>Второй ребенок</p>  <p>Третий ребенок</p>  <h3>Четвертый ребенок</h3>  <p>Пятый ребенок</p>  <h4>Последний ребенок</h4>  </div>  

Стиль CSS:

  /* CSS */  p:first-of-type {   color: violet;   text-transform: uppercase;  }    p:last-of-type {   font-style: italic;   font-size: 0.8em;  }    p:nth-of-type(3) {   color: red;  }    p:nth-of-type(odd) {   background-color: #A2DED0;  }    p:nth-of-type(even) {   background-color: #C8F7C5;  }    h3:only-of-type {   text-decoration: underline;  }  
Скриншот: применение псевдоклассов :first-of-type, :last-of-type, :nth-of-type и :only-of-type
Скриншот: применение :first-of-type, :last-of-type, :nth-of-type и :only-of-type

Первое правило CSS, которое вы видите – это p:first-of-type. Что оно делает? Оно выбирает дочерний элемент типа p, который первым встречается у родителя. И не важно, на каком месте среди элементов других типов находится данный тег – на первом, втором или десятом. В этом и заключается отличие между псевдоклассами :first-child и :first-of-type.

Второе правило – p:last-of-type – применяет стиль к последнему дочернему элементу типа p. Как видно из HTML-кода, после последнего тега <p> есть еще и тег <h4>, присутствие которого никак не влияет на выполнение CSS-правила (в отличие от варианта с :last-of-child).

Следующее правило – p:nth-of-type(3) – изменяет цвет шрифта на красный. Применяется этот стиль к тегу <p>, который является третьим по счету элементом своего типа у родителя. На скриншоте вы видите, что красный цвет применяется к тегу <p>, который по факту является пятым ребенком тега <div>. Но если не брать во внимание элементы других типов, то получается, что тег <p> с красным шрифтом находится на третьем месте (среди тегов своего типа). Таким образом работает данное правило.

Правила p:nth-of-type(even) и p:nth-of-type(odd) работают аналогично: поскольку перед двоеточием указано имя p, то выбираются четные и нечетные дочерние элементы типа p и окрашиваются в заданные цвета. Остальные элементы пропускаются.

Последнее правило – h3:only-of-type – применяется к содержимому тега <h3>, делая текст подчеркнутым. Данный стиль работает лишь потому, что тег <h3> является единственным дочерним элементом своего типа. Если в HTML-код добавить еще один тег <h3>, стиль не будет применён.

Выводы

Следующая часть этой главы – о смежных и родственных селекторах.

idg.net.ua


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector