Заголовок
Подзаголовок 1
Это абзац с текстом
В последующих нескольких абзацах я хочу подробнее рассмотреть селектор обобщенных родственных элементов (или ~) и область его возможного применения.
На написание данной статьи меня натолкнула малая распространённость информации о нём.
Это абзац с текстом
CSS:
h1~h2 {
color:red;
}
В результате в красный цвет окрасятся заголовки h2, т.к. у них общий родительский элемент с заголовком h1, и в коде они стоят после него.
Если же элемент будет стоять выше исходного, то он не будет выбран.
Следует запомнить, что выбираются только элементы, которые имеют общего родителя с исходным, а не те, которые всего-лишь имеют общего предка. Это хорошо иллюстрирует второй пример.
Пример
Это абзац с текстом Это второй абзац с текстом
Это текст, обрамлённый в span, который находится внутри абзацаЗаголовок
Подзаголовок 1
Подзаголовок 2
В результате ничего не выделится красным, т.к. родитель элемента span - p, а элемента h1 - article.
Для того чтобы span стал красным, необходимо либо вынести его из абзаца на один уровень с h1, либо сделать так:
Символически (в случае с:hover) это выглядит так:
A:hover ~ B{style}
, где A
- элемент, на который наведён указатель мыши, а на B
распространяются новые стилевые правила.
Пример
HTML:
Div{ width:100px; height:50px; margin:5px; background:gray; } span:hover~div{ background:green; }
В результате, блоки станут зелёного цвета, при наведении на надпись.
Покрасить Блок №2 в зелёный цвет
CSS: span{ cursor:pointer; } div{ width:100px; height:50px; margin:5px; background:gray; } .span1:hover~.block2{ background:green; } .span2:hover~.block1{ background:blue; }
Можно применять вот так:
HTML:
Пример
HTML:
Как видите, у селектора обобщенных родственных элементов есть достаточное количество интересных способов применения. В последнее время CSS продвинулся далеко и позволяет реализовать то, что раньше возможно было только с использованием JavaScript.
Но всё-таки, на мой взгляд, если провести аналогии, CSS - это механическая составляющая (если угодно - “железо”) которая не предназначена для построения логики. JavaScript, например, может выступать в роли “программного обеспечения”.
Итак, в этой статье я попытался раскрыть тему селектора обобщенных родственных элементов. Получилось или нет, судить вам.
Для изменение свойства того или иного элемента в CSS существует такой понятие как селектор :hover
.
Особенно широкое распространение hover
приобретает когда нужно изменить свойство ссылки при наведении курсора. Например мы легко может подчеркнуть ссылку, которая по умолчанию не подчеркнута:
Уроки, рецепты CSS
При помощи a:link
и a:visited
мы указали свойства для всех ссылок, в том числе тех по которым пользователь переходил ранее (:visited
). Все ссылки приобретают зеленый цвет и становятся похожими на обычный текст, без подчеркивания. В то время как a:hover
дает указание подчеркнуть ссылку при каждом наведении курсора.
Таким же образом мы можем добавить бордюр изображению при наведении мышки:
Поупражнявшись с простыми примерами, перейдем к более редкой задаче, которая была вынесена в заголовок статьи. Как изменить свойства дочернего элемента при наведении курсора на родительский элемент?
Ситуация разрешается очень просто. Вначале озвучивается родительский элемент с селектором :hover
, затем идет обозначение дочернего элемента который необходимо трансформировать:
Жизнь прожить,
не стили CSS выучить.
При наведении на первое предложение, текст внутри тега подсвечивается красным. При этом часть вне остаётся зеленой. Также цвет не меняется при наведении курсора на нижний текст, расположенного за пределами тега
.
Чтобы рецепт стал более наглядным, озвучим конкретное техническое задание: имеется блок DIV
, внутри которого помещено два изображения. Первое изображение показано, а второе – спрятано и должно появляться только при наведении мышки на блок DIV
.
Рецепт решения прост:
: при наведении курсора на изображение монитора, появляется стрелка с зеленой тенью в левом верхнем углу. Когда пользователь убирает курсор с изображения, изображение playButton.png снова пропадает.
Стоит вспомнить что конструкция div#Block:hover
применяется в случае когда у Псевдоклассы определяют динамическое состояние элементов, которое изменяется
с помощью действий пользователя, а также положение в дереве
документа. Примером такого состояния служит текстовая ссылка, которая меняет
свой цвет при наведении на неё курсора мыши. При использовании псевдоклассов
браузер не перегружает текущий документ, поэтому с помощью псевдоклассов можно получить
разные динамические эффекты на странице. Синтаксис применения псевдоклассов следующий. Селектор:Псевдокласс { Описание правил стиля } Вначале указывается селектор, к которому добавляется псевдокласс, затем следует
двоеточие, после которого идёт имя псевдокласса. Допускается применять псевдоклассы
к именам идентификаторов или классов (A.menu:hover {color:
green}
), а также к контекстным селекторам (.menu A:hover
{background: #fc0}
). Если псевдокласс указывается без селектора впереди (:hover
), то он будет применяться ко всем элементам документа. Условно все псевдоклассы делятся на три группы: К этой группе относятся псевдоклассы, которые распознают текущее состояние элемента и применяют стиль только для этого состояния. Происходит при активации пользователем элемента. Например, ссылка становится активной, если навести на неё курсор и щёлкнуть мышкой. Несмотря на то, что активным может стать практически любой элемент веб-страницы, псевдокласс :active
используется преимущественно для ссылок. Применяется к непосещенным ссылкам, т. е. таким ссылкам, на которые пользователь ещё
не нажимал. Браузер некоторое время сохраняет историю посещений, поэтому
ссылка может быть помечена как посещенная хотя бы потому, что по ней был зафиксирован
переход ранее. Запись A {...}
и A:link
{...}
по своему результату равноценна, поскольку в браузере даёт один
и тот же эффект, поэтому псевдокласс :link
можно
не указывать. Исключением являются , на них действие :link
не распространяется. Применяется к элементу при получении им фокуса. Например, для текстового поля
формы получение фокуса означает, что курсор установлен в поле, и с помощью клавиатуры
можно вводить в него текст (пример 15.1). Пример 15.1. Применение псевдокласса:focus HTML5
CSS 2.1
IE
Cr
Op
Sa
Fx
Результат примера показан ниже (рис. 15.1). Во второй строке находится курсор, поэтому текстовое поле получило фокус. В данном примере в текстовом поле содержится предварительный текст, он определяется
значением атрибута value
тега
.
При щелчке по элементу формы происходит получение полем фокуса, и цвет текста
меняется на красный. Достаточно щёлкнуть в любом месте страницы (кроме текстового
поля, естественно), как произойдет потеря фокуса и текст вернётся к первоначальному
чёрному цвету. Результат будет виден только для тех элементов, которые могут
получить фокус. В частности, это теги
,
, Псевдокласс :hover
активизируется, когда курсор
мыши находится в пределах элемента, но щелчка по нему не происходит. Данный псевдокласс применяется к посещённым ссылкам. Обычно такая ссылка меняет
свой цвет по умолчанию на фиолетовый, но с помощью стилей цвет и другие параметры
можно задать самостоятельно (пример 15.2). Пример 15.2. Изменение цвета ссылок HTML5
CSS 2.1
IE
Cr
Op
Sa
Fx
Результат примера показан на рис. 15.2. В данном примере показано использование псевдоклассов совместно со ссылками.
При этом имеет значение порядок следования псевдоклассов. Вначале указывается :visited
, а затем идёт :hover
,
в противном случае посещённые ссылки не будут изменять свой цвет при наведении
на них курсора. Селекторы могут содержать более одного псевдокласса, которые перечисляются подряд через двоеточие, но только в том случае, если их действия не противоречат друг другу. Так, запись A:visited:hover
является корректной, а запись A:link:visited
- нет. Впрочем, если подходить формально, то валидатор CSS считает правильным любое сочетание псевдоклассов. Браузер Internet Explorer 6 и младше позволяет использовать псевдоклассы :active
и :hover
только
для ссылок. Начиная с версии 7.0 псевдоклассы в этом браузере работают и для других элементов. Псевдокласс :hover
не обязательно должен применяться к ссылкам, его можно добавлять и к другим элементам документа. Так, в примере 15.3 показана таблица, строки которой меняют свой цвет при наведении
на них курсора мыши. Это достигается за счёт добавления псевдокласса :hover
к селектору TR
. Пример 15.3. Выделение строк таблицы HTML5
CSS 2.1
IE
Cr
Op
Sa
Fx
Результат примера показан ниже (рис. 15.3). К этой группе относятся псевдоклассы, которые определяют положение элемента
в дереве документа и применяют к нему стиль в зависимости от его статуса. Применяется к первому дочернему элементу селектора, который расположен в дереве
элементов документа. Чтобы стало понятно, о чем речь, разберём небольшой код
(пример 15.4). Пример 15.4. Использование псевдокласса:first-child HTML5
CSS 2.1
IE
Cr
Op
Sa
Fx
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diem nonummy nibh euismod tincidunt
ut lacreet dolore magna aliguam erat volutpat. Ut wisis enim ad minim veniam, quis nostrud
exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo
consequat. Результат примера показан ниже (рис. 15.4). Рис. 15.4. Использование псевдокласса:first-child В данном примере псевдокласс :first-child
добавляется
к селектору B
и устанавливает для него красный цвет
текста. Хотя контейнер
встречается в первом
абзаце три раза, красным цветом будет выделено лишь первое упоминание, т. е.
текст «Lorem ipsum». В остальных случаях содержимое контейнера
отображается чёрным цветом. Со следующим абзацем всё начинается снова, поскольку
родительский элемент поменялся. Поэтому фраза «Ut wisis enim» также будет выделена
красным цветом. Браузер Internet Explorer поддерживает псевдокласс :first-child
начиная с версии 7.0. Псевдокласс :first-child
удобнее всего использовать
в тех случаях, когда требуется задать разный стиль для первого и остальных однотипных
элементов. Например, в некоторых случаях красную строку для первого абзаца
текста не устанавливают, а для остальных абзацев добавляют отступ первой строки.
С этой целью применяют свойство text-indent
с нужным
значением отступа. Но чтобы изменить стиль первого абзаца и убрать для него
отступ потребуется воспользоваться псевдоклассом :first-child
(пример 15.5). Пример 15.5. Отступы для абзаца HTML5
CSS 2.1
IE
Cr
Op
Sa
Fx
Историю эту уже начали забывать, хотя находились горожане, которые
время от времени рассказывали ее вновь прибывшим в город посетителям. Легенда обрастала подробностями и уже совсем не напоминала произошедшее
в действительности событие. И, тем не менее, ни один человек не решался
заикнуться о ней с наступлением темноты. Но однажды в город вновь вошел незнакомец. Он хромал на левую ногу. Результат примера показан ниже (рис. 15.5). Рис. 15.5. Изменение стиля первого абзаца В данном примере первый абзац текста не содержит отступа первой строки, а для
остальных он установлен. Для документов, одновременно содержащих тексты на нескольких языках имеет значение соблюдение правил синтаксиса, характерные для того или иного языка. С помощью псевдоклассов можно изменять стиль оформления иностранных текстов, а также некоторые настройки. Определяет язык, который используется в документе или его фрагменте. В коде HTML язык устанавливается через атрибут lang
, он обычно добавляется к тегу
. С помощью псевдокласса :lang
можно задавать определённые настройки, характерные для разных языков, например, вид кавычек в цитатах. Синтаксис следующий. Элемент:lang(язык) { ... } В качестве языка могут выступать следующие значения: ru - русский; en - английский; de - немецкий; fr - французский; it - итальянский. Пример 15.6. Вид кавычек в зависимости от языка HTML5
CSS 2.1
IE
Cr
Op
Sa
Fx
Цитата на французском языке: Цитата на немецком: Цитата на английском: Результат данного примера показан на рис. 15.6. Для отображения типовых кавычек в примере используется стилевое свойство quotes
, а само переключение языка и соответствующего вида кавычек происходит через атрибут lang
, добавляемый к тегу A { color: blue; background: orange; } 2. Требуется выделить фоновым цветом первую строку таблицы. Какой псевдокласс для этой цели подойдёт?
3. К каким элементам добавляет стиль следующая конструкция - A:link:visited:hover ?
1. Псевдокласс:visited стоит после:hover. 3. Ни к одному элементу.Псевдоклассы, определяющие состояние элементов
:active
:link
:focus
:hover
Пики
Трефы
Бубны
Червы
Чебурашка
5 2 4 2
Крокодил Гена
2 7 1 3
Шапокляк
5 4 3 1
Крыса Лариса
1 0 5 7
Псевдоклассы, имеющие отношение к дереву документа
:first-child
Псевдоклассы, задающие язык текста
:lang
Ce que femme veut,
Dieu le veut
.Der Mensch, versuche die Gotter nicht
.То be or not to be
.
.
Вопросы для проверки
A:hover { background: yellow; color: black; }
A:visited { color: white; }
A:active { color: red; }Ответы
И всеми сопутствующими ей факторами для клиентов «Мегафона » уже относительно давно стало доступно совершать обмен бонусных баллов на деньги (средства на лицевом счёте)....