Селекторы стандарта CSS3 имеют поистине безграничные возможности для выделения HTML-элементов без создания дополнительной разметки (которая практически всегда применялась в предыдущих версиях CSS).
В этой статье я собираюсь менее чем за 5 минут выполнить стилизацию популярного детского стихотворения “Мерцай, звездочка, мерцай!”, используя CSS3-селекторы.
Кодируем стихотворение
Не существует единого мнения в вопросе, как следует выполнять HTML-разметку для стихотворения: большинство полагает, что каждый стих из стихотворения должен быть параграфом (
), а каждая строка стиха должна быть отделена от другой с помощью элемента 1
p
.1
br
Некоторые возлагают надежды на грядущие элементы стандарта HTML5, предназначенные специально для форматирования стихотворений, такие как
, 1
<poem>
и 1
<stanza>
. Однако маловероятно, что это будущее наступит в скором времени (если вообще наступит).1
<line>
Разметка
В будущей разметке имеются три основных элемента:
- заголовок;
- подзаголовок с информацией об авторе;
- само стихотворение, собственно.
Стилизация заголовков
Прежде чем приступать к стилизации элементов страницы, необходимо добавить базовый сброс стилей и некоторые значения по умолчанию в таблицу стилей:
Само стихотворение обернем в блок
и разместим его по центру окна браузера, для большей красоты:1
div
Заголовки стихотворения также разместим по центру страницы и уберем полужирное начертание, присвоенное им по умолчанию:
Установим размер шрифта для основного заголовка - тега
; добавим небольшой 1
h1
и такой же 1
margin-bottom
(потому что размер шрифта был задан слишком большой; если заголовок окажется достаточно длинным, то между его строками будет большое расстояние):1
line-height
Для заголовка второго уровня
с информацией об авторе и дате публикации будет использовать другой, более легкий цвет; меньший размер шрифта; сделаем его курсивным, чтобы он выглядел совсем уж по другому; а также небольшой отступ внизу с помощью 1
h2
:1
margin-bottom
Стихотворение
Для основного текста стихотворения добавим интерлиньяж
достаточно большого размера для того, чтобы расстояние между строками было большое и такой текст было удобно читать. Также для каждого стиха добавим 1
line-height
, чтобы визуально отделить их друг от друга:1
margin-bottom
Волшебные селекторы
А вот теперь начнем развлекаться! Первое - добавим декоративный элемент в начале и в конце информации об авторе. Для этого воспользуемся псевдо-элементами
и 1
:before
в сочетании с CSS-свойством 1
:after
:1
content
Теперь увеличим первую букву стихотворения - так называемая буквица (
). Для этого воспользуемся смежным селектором (1
drop cap
) и псевдо-элементом (1
+
).1
:first-child
Смежный селектор позволяет выбрать селекторы, которые следуют сразу выбранным нами селектором внутри одного и того же элемента-родителя (например, внутри одного и того же блока
).1
div
Мы выделим первую букву каждого параграфа, который следует сразу за заголовком второго уровня
, который в нашем примере только один:1
h2
Буквицу смещаем влево, так чтобы остальной текст обтекал его вокруг; при увеличении размера шрифта междустрочный интервал
уменьшаем, чтобы последующие строки не были сдвинуты вниз; и слегка сместим буквицу внутри текста с помощью 1
line-height
.1
margin
Выделим первую строку каждого параграфа через
и сделаем его более удобочитаемым, добавив немного расстояния между каждой строчкой:1
small-caps
Для того, чтобы еще как-то выделить стихотворение, добавим к последнему параграфу дополнительное пространство внизу, чтобы отделить его от всего остального контента, который будет идти следом за ним. Для этого воспользуемся псевдо-элементом
, с помощью которого выделим последнего потомка элемента-родителя:1
:last-child
Вот стилизация стихотворения и закончена!
Некоторые заметки о поддержке браузерами
Не стоит ожидать, что весь созданный CSS-код будет одинаково работать во всех основных браузерах. Последние версии Safari, Firefox и Opera поддерживают все представленные здесь селекторы. Но Internet Explorer 8 не поддерживает псевдо-элемент
; Internet Explorer 7 не поддерживает псевдо-элементы 1
:last-child
, 1
:last-child
и 1
:before
; Internet Explorer 6 также не поддерживает псевдо-элемент 1
:after
, помимо всего прочего.1
:first-child
Заключение
Эта статья является очень общим и кратким руководством, как использовать селекторы CSS3-стандарта для стилизации HTML-элементов без дополнительных классов, идентификаторов или чрезмерно раздутого кода. Селекторы CSS3 не работают в более старых версиях браузеров, таких как Internet Explorer 6, в которых генерируются только основные CSS-свойства (за редким исключением).
Но это не означает, что текст в окне браузера делается нечитаемым - просто CSS3-селекторы добавляют дополнительное оформление в современных браузерах, которыми пользуются на сегодняшний день только небольшое количество людей.
Примечание переводчика: статья была написано довольно давно - в 2009 году. Что касается поддержки браузерами CSS3-селекторов, то на сегодняшний день изменений не так уже и много. Исключением является факт, что о браузере IE6 можно забыть.
Оригинал статьи - “Styling a Poem with Advanced CSS Selectors”.