Настала очередь изучить, что такое псевдо-класс
.
1 :target
Вопрос достаточно интересный как с точки зрения теории, так еще больше - с точки зрения практики.
Начнем издалека и вспомним (если кто читал) одну из глав книги Энди Бадда “Мастерская CSS”. Глава называется “Изменение стиля элемента при наведении указателя на отдаленный элемент” и речь в ней идет о том, как сделать так, чтобы управлять одним элементом с помощью другого.
Техника, описанная в данной главе, представляла из себя следующее. В ссылку вкладывались несколько элементов, которые позиционировались абсолютно на странице и размещались в любом ее месте.
Визуально создается впечатление, что они никак не связаны между собой. Но на самом деле они находятся внутри одного элемента - ссылки (ниже приведен кусок кода из этой главы в качестве примера):
Способ достаточно хорош, за исключением того, что применяется дополнительная разметка и нарушается семантика HTML-документа. На момент написания этой книги это был единственный способ управления “отдаленными элементами на странице.
Но на сегодняшний день существует еще один способ, более аккуратный и универсальный - с помощью псевдо-класса
. Другое дело, что поддержка в браузерах этого CSS-свойства не полностью реализована и здесь можно смело показать пальцем в сторону браузера IE, в нем оно поддерживается, начиная с 9-ой версии.1
:target
С помощью этого псевдо-класса можно управлять абсолютно любым элементом в документе. При этом он не обязан располагаться в каком-то определенном месте, наоборот - он может находиться в нормальном потоке и не нарушать семантику.
Приведу в качестве примера кусок кода, демонстрирующий такой подход:
Видим ссылку, помещенную в середине документа, обрамленную элементами
. У ссылки атрибут 1
p
имеет значение 1
href
, который очень похож на ссылку на якорь. На самом деле это и есть ссылка на якорь, который назначен для одного из параграфов с идентификатором 1
#example
.1
id="example"
Вид ссылки может быть не обязательно таким, но и более длинным -
. Все, что располагается в ней после знака диез 1
http://localhost:7788/third/#example
, называется 1
#
.1
хэштег
Псевдо-класс
как раз и служит для стилизации элемента с якорем, на который указывает такая ссылка. Давайте приступим к стилизации, чтобы воочию увидеть, как работает этот псевдо-элемент.1
:target
Для одного из параграфов мы уже назначили идентификатор, который является якорем. Пропишем для него немного правил:
Мы изменили семейство шрифтов, кегль и цвет. Эти правила устанавливаются “как обычно”, то есть - как прописали, так они и отображаются в браузере. Теперь создадим немного стилей, которые первоначально себя никак не проявляют, а только по происшествии какого-то события.
В нашем случае это будет клик на ссылке. Для таких правил синтаксис следующий:
Откроем созданную нами страницу в браузере - и почти ничего не увидим. Точнее - только те правила, которые явно прописаны в первом куске кода. Но если кликнуть мышью на ссылке с текстом
, то увидим достаточно занимательную трансформацию параграфа. Это псевдо-класс 1
Example
в действии!1
:target
Он применил прописанные для него правила только при совершении некоего события. И применены они были к обособленному участку HTML-кода (помеченному идентификатором
), который почти никак не связан со ссылкой.1
#example
Можно немного усложнить пример и связать несколько параграфов между собой, то есть таким образом:
Откроем вновь страницу в браузере и посмотрим результат. Все ОК.
Псевдо-класс
может принимать любые CSS-свойства, в том числе скрытие\показ элементов с помощью правила 1
:target
. Последнее довольно часто применяется при верстке различных блоков.1
display
На странице сайта MDN приведен пример создания одного из таких блоков - CSS LightBox. Другим ярким примером использования этого элемента являются вкладки на чистом CSS, где необходима смена цвета вкладок и их содержимого при переключении.
Ниже привожу, как всегда, полный текст кода.
В принципе, это и все, что можно сказать о псевдо-классе
.1
:target