CSS: соседние селекторы. Учебник CSS - Соседние селекторы CSS Селекторы по атрибутам тега


Синтаксис CSS несложен, и для понимания его совсем не нужно иметь степень доктора в области IT. Однако, это один из немногих популярных языков, который не является логичным в самом прямом смысле этого слова. В отличие от других языков веб-программирования, таких как JavaScript и PHP, в CSS проблемы не решаются с помощью обычной логики. Алгоритмы типа «если X, то сделать Y, в противном случае сделать Z» или «выбрать все Y, затем сделать с ними X» не могут быть осуществлены в таком языке, как CSS. Проще говоря, это язык, созданный для оформления, язык для дизайнеров, а не девелоперов. Некоторые из опытных программистов, с которыми я работал, именно по этой причине тратили много усилий на то, чтобы освоить CSS.

Обучение CSS начинается с классов и ID, а также с использования. и # для непосредственного обозначения элементов. Этого достаточно чтобы построить полнофункциональный веб-сайт, но это не достаточно гибкое решение в случае полной смены дизайна. Давайте взглянем на альтернативный подход к управлению такими труднодоступными элементами.

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

H1 + p
Это выделяет следующий p-элемент, расположенный сразу после h1-элемента в DOM. Типографическая теория предполагает, что мы должны использовать отступы в параграфах текста, но только если они следуют за другим параграфом. На практике это может быть использовано, чтобы сделать отступы во всех параграфах, кроме первого:
p + p { text-indent: 1em; }
Это гораздо удобней, чем выделять первый параграф с помощью class=«first». Три строки, никаких классов и полная поддержка браузеров. Если вы располагаете тэги img, относящиеся к наполнению сайта, внутри тэгов p (как, собственно, и следует делать), можно просто отодвинуть их левые поля обратно с помощью негативного значения -1em:
p + p img { margin-left: -1em; }
Довольно просто, правда? А что, если нам захочется выделить первую строку всех параграфов, которые стоят сразу после заголовков, не изменяя всех остальных параграфов? Опять-таки мы можем использовать класс представления. Простой селектор, сделанный из соседнего составного комбинатора, и псевдо-элемент справятся с задачей:
h1 + p::first-line { font-variant: small-caps; }
Примечание: псевдо-элемент:first-line принят в CSS 2.1, в CSS 3 используется запись::, с целью установить различие между псевдо-классами и псевдо-элементами.

Наследственный комбинатор
Обычный протокол разметки – это помещение разделов в как-либо названном элементе в #page или #wrap:

Соседние селекторы CSS

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

Чтобы вы четко усвоили, что такое соседние элементы, давайте снова рассмотрим знакомый пример, только чуть-чуть измененный.

<тег1> <тег2>... <тег3><тег4>... <тег5><тег6>...

В этом примере есть всего две пары соседних элементов - это <тег2> и <тег3> , а также <тег3> и <тег5> , все. То есть <тег2> и <тег5> уже не являются соседями по отношению друг к другу., так как между ними стоит <тег3> .

Соседние селекторы образуются из двух или более обычных селекторов разделенных между собой знаком "+ " (плюс), где сначала указывается самый первый элемент в коде, затем тот, который стоит за ним, потом тот, который стоит сразу за вторым и так далее. Как обычно, стили применяются к тому элементу, селектор которого находится последним в списке. Общий синтаксис.

селектор1 + селектор2 { свойство: значение; свойство: значение; ... }

Пробелы с обоих сторон знака "+ " можно ставить, а можно и нет, по желанию.

Пример использования соседних селекторов в CSS

Соседние селекторы

Заголовок

Текст. Strong. Текст. Em.

Текст. Em. Текст. Strong.

Текст. Em. Текст. Strong.

Результат в браузере

Заголовок

Текст. Strong. Текст. Em.

Текст. Em. Текст. Strong.

Текст. Em. Текст. Strong.

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

Браузер Internet Explorer 6.0 не понимает соседние селекторы (как и дочерние). Помните об этом.

Домашнее задание.

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

Добрый вечер уважаемые коллеги, сегодня мы изучим с Вами два дополнительных селектора , которые называются дочерними и соседними селекторами css . В большей степени можно обойтись и без них, однако, для вашего развития их нужно усвоить, и иногда применять, чтобы они оставались в вашей памяти. Поэтому обсудим, какие селекторы являются соседними, а какие дочерними и разберем на примере.
Дочерние селекторы css - элементы, которые располагаются внутри родительского элемента. Пример этому может быть следующим. Мы имеем блок, в котором находится параграф, еще один блок и картинка. Вот эти три элемента и являются дочерними. Если в дочернем блоке также находятся другие элементы, то они уже не являются дочерними у первого блока, а являются дочерними у блока, в котором непосредственно находятся. Надеюсь, суть Вы уловили.
Соседние селекторы CSS - элементы располагающиеся друг за другом в коде документа. Пример этому такой. Мы имеет параграф и следующий за ним тег span . Все довольно ясно, а нам лишь осталось разобрать все это на реальных примерах.








Текст в абзаце


Текст в span

Уже не дочерний текст в абзаце






При помощи стилей добавим одинаковый результат для тега span

Div > span {
font-size : 200%;
}

p + span {
color : red;
}

Результат выполнения кода в обоих случаях будет применяться к тегу span , т.к., он является дочерним по отношению к тегу div и следующим после тега p . Поэтому шрифт стал в два раза больше и красного цвета. Теперь мы с Вами полностью разобрались с дочерними и соседними селекторами в CSS , а Вам остается лишь укреплять свои знания на практике, до скорого!

Влад Мержевич

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

Lorem ipsum dolor sit amet.

В этом примере тег является дочерним по отношению к тегу

Поскольку он находится внутри этого контейнера. Соответственно

Выступает в качестве родителя .

Lorem ipsum dolor sit amet.

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

Никак не влияет на их отношение.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Соседними здесь являются теги и , а также и . При этом и к соседним элементам не относятся из-за того, что между ними расположен контейнер .

Для управления стилем соседних элементов используется символ плюса (+), который устанавливается между двумя селекторами. Общий синтаксис следующий.

Селектор 1 + Селектор 2 { Описание правил стиля }

Пробелы вокруг плюса не обязательны, стиль при такой записи применяется к Селектору 2, но только в том случае, если он является соседним для Селектора 1 и следует сразу после него.

В примере 11.1 показана структура взаимодействия тегов между собой.

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

HTML5 CSS 2.1 IE Cr Op Sa Fx

Соседние селекторы

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

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

Рис. 11.1. Выделение текста цветом при помощи соседних селекторов

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

Разберем более практичный пример. Часто возникает необходимость в текст статьи включать различные сноски и примечания. Обычно для этой цели создают новый стилевой класс и применяют его к абзацу, таким способом можно легко изменить вид текста. Но мы пойдем другим путём и воспользуемся соседними селекторами. Для выделения замечаний создадим новый класс, назовём его sic , и станем применять его к тегу

. Первый абзац после такого заголовка выделяется цветом фона и отступом (пример 11.2). Вид остальных абзацев останется неизменным.

Пример 11.2. Изменение стиля абзаца

HTML5 CSS 2.1 IE Cr Op Sa Fx

Изменение стиля абзаца

Методы ловли льва в пустыне

Метод последовательного перебора

Пусть лев имеет габаритные размеры L x W x H, где L - длина льва от кончика носа до кисточки хвоста, W - ширина льва, а H - его высота. После чего пустыню разбиваем на ряд элементарных прямоугольников, размер которых совпадает с шириной и длиной льва. Учитывая, что лев может находиться не строго на заданном участке, а одновременно на двух из них, клетку для ловли следует делать повышенной площади, а именно 2L x 2W. Благодаря этому мы избежим ошибки, когда в клетке окажется пойманным лишь половина льва или, что хуже, только его хвост.

Важное замечание

Для упрощения расчетов хвост в качестве погрешности измерения можно отбросить и не принимать во внимание.

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

Рис. 11.2. Изменение вида абзаца за счёт использования соседних селекторов

В данном примере текст отформатирован с применением абзацев (тег

), но запись H2.sic + P устанавливает стиль только для первого абзаца идущего после тега

, у которого добавлен класс с именем sic .

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

и

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

и

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

Пример 11.3. Отступы между заголовками и текстом

HTML5 CSS 2.1 IE Cr Op Sa Fx

Соседние селекторы

Заголовок 1

Заголовок 2

Абзац!

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

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

1. Какие теги в данном коде являются соседними?

Формула серной кислоты:H2 SO4

  1. И

  2. и
  3. и
  4. и
  5. и

2. Имеется следующий код HTML :

Великая теорема Ферма


X n + Y n
= Z n


где n - целое число > 2

Какой текст выделится красным цветом с помощью стиля SUP + SUP { color: red; } ?

  1. Вторая «n»
  2. Вторая и третья «n».