htmlbook.ru - Для тех, кто делает сайты
Статьи Книги Шаг за шагом Рецепты Форум Графика для Web
Главная страница > Статьи > Рецепты CSS > Создание буквицы

Создание буквицы

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

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

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

Рис. 1

Рис. 1. Вид буквицы в тексте

Буквица в виде картинки

Буквица привлекает внимание читателя к началу текста, особенно если страница лишена других ярких деталей. Обычно кроме самого символа используются изображения растений, животных и других объектов. Это, конечно, не обязательно, но может придать определенный настрой содержанию. Если хочется именно так сделать на сайте, лучше всего для этого подойдет рисунок, выровненный по левому краю (пример 1).

Пример 1. Создание буквицы с помощью рисунка

Валидный HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>Буквица</title>
</head>
<body>
<p><img src="d.gif" width="70" height="70" align="left" hspace="4" alt="Д">олго ли, коротко ли, скоро сказка сказывается, да не скоро дело делается, - приходит Иван-царевич к избушке; стоит в чистом поле избушка, на куриных лапках повертывается.</p>
</body>
</html>

Расстояние от текста до изображения управляется параметрами hspace — отступы вокруг рисунка по горизонтали и vspace — отступы по вертикали. Выравнивание рисунка по левому краю и одновременно его обтекание текстом создается параметром align тега <IMG> со значением left.

Достоинства рисунков в качестве буквицы следующие:

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

Буквица в тексте

Можно создать буквицу не в виде рисунка, а в качестве простого текста, увеличенного по сравнению с базовым шрифтом. Для того чтобы текст огибал первую букву, ее необходимо поместить в контейнер <SPAN> и для него задать свойство float со значением left, как показано в примере 2.

Пример 2. Использование стилей для создания буквицы

Валидный HTML
Валидный CSS

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>Буквица</title>
<style type="text/css">
.letter {
 font-size: 220%; /* Размер шрифта буквицы */
 float: left; /* Выравнивание по левому краю */
 color: blue; /* Цвет буквицы */
 padding-right: 3px; /* Отступ между буквицей и текстом */
 line-height: 32px; /* Положение символа */
}
</style>
</head>
<body>
<p><span class="letter">Р</span>ангоут - совокупность деревянных частей оснащения судна, предназначенных для постановки парусов, сигнализации, поддержания грузовых стрел и проч. (мачты, стеньги, гафеля, бушприт и т.д.).</p>
</body>
</html>

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

Рис. 2

Рис. 2. Вид буквицы, созданной с помощью стилей

Размер шрифта буквицы управляется с помощью параметра font-size, а цвет символа через color. Чтобы добавить небольшое пространство между буквицей и текстом используется атрибут padding-right. Также можно слегка сдвигать букву вверх или вниз за счет добавленного свойства line-height. Значение подбирается самостоятельно, исходя из гарнитуры шрифта, размера текста и собственны х предпочтений.

На самом деле создание буквицы можно автоматизировать, если вспомнить о псевдоэлементе first-letter. Он через двоеточие добавляется к требуемому селектору и определяет стиль первого символа текста. Таким образом, запись p:first-line будет задавать стиль первой буквы каждого абзаца текста (тега <P>). Так что в простейшем случае CSS перепишется, как показано в примере 3.

Пример 3. Использование псевдоэлемента first-letter

Валидный CSS
P:first-letter {
 font-size: 220%; /* Размер шрифта буквицы */
 float: left; /* Выравнивание по левому краю */
 color: blue; /* Цвет буквицы */
 padding-right: 3px; /* Отступ между буквицей и текстом */
}

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

P {
/* Стиль для первого абзаца */
}

P + P { /* Соседние селекторы */
/* Стиль для всех абзацев, кроме первого */
}

Пробелы вокруг плюса не обязательны, стиль при такой записи применяется к текстовому абзацу только в том случае, если перед ним был еще один абзац. Поскольку перед первым абзацем ничего нет (на то он и первый), то стиль соседнего селектора к нему не применим.

Замечание

Соседние селекторы не поддерживаются браузером Internet Explorer.

Для создания буквицы требуется добавить псевдоэлемент first-letter к селектору P и определить вид первого символа. Но поскольку это действие будет распространяться на все параграфы текста, то с помощью соседних селекторов требуется придать буквице вид обычного текста (пример 3).

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

Валидный HTML
Валидный CSS

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>Буквица</title>
<style type="text/css">
p:first-letter {
 font-size: 30pt; /* Размер шрифта буквицы */
 float: left; /* Выравнивание по левому краю */
 background-color: #fc0; /* Цвет фона */
 padding: 3px; /* Поля вокруг буквы */
 margin-right: 4px; /* Отступ от фона до текста */
}
p + p:first-letter {
 color: black; /* Черный цвет текста */
 font-size: 12pt; /* Размер шрифта в пунктах */
 background-color: #fff; /* Белый цвет фона */
 padding: 0; /* Обнуляем поля */
 margin: 0; /* Обнуляем отступы */
}
</style>
</head>
<body>
<h1>Ловля льва методом случайных чисел</h1>
<p>Разделим пустыню, в которой живет лев, на ряд элементарных прямоугольников. После чего перебираем выделенные фрагменты пустыни, каждый раз выбирая фрагмент случайным образом. На каждом цикле итерации проверяем, находится ли здесь лев. Если да, то лев окажется пойман.</p>
<p>Некоторым читателям может показаться, что этот вариант похож на метод простых итераций, в котором происходит простой перебор участков пустыни для поиска льва. Это действительно так, за исключением того, что прямоугольники выбираются не последовательно, а случайно. Таким образом, в лучшем случае поиск может закончиться сразу же, а в худшем - превратиться в метод последовательного перебора.</p>
<p>Во всех случаях предполагается, что лев стационарен и не покидает своего места. Для поиска мобильного льва следует воспользоваться методом обратной реверберации или методом искривленного квазипространства.</p>
</body>
</html>

Результат данного примера показан ниже. В браузере Internet Explorer буквица будет добавлена к каждому абзацу без исключений.

Рис. 3

Рис. 3. Буквица для первого абзаца текста

Команда p + p:first-letter определяет стиль первой буквы всех абзацев кроме первого и предназначена для того, чтобы преобразовать буквицу в рядовой текст. Впрочем, ничего не мешает изменить цвет символов и получить тем самым новое оформление текстового материала.

Статья опубликована: 25.01.2007 Последнее обновление: 04.04.2008

Прежде, чем писать комментарий к статье, примите во внимание следующие моменты.

  1. Не задавайте вопросы в комментариях, для этой цели предназначен форум, где вы получите нужную помощь.
  2. Удаляются любые комментарии, которые:
    • включают множество ошибок;
    • написаны безграмотно;
    • не имеют отношения к данной статье;
    • не содержат никакой полезной информации для посетителей.
  3. Для выделения отдельных слов используйте следующие команды: [b]жирный[/b], [i]курсив[/i], [color=цвет]цветной текст[/color], [tag]тег[/tag], [var]параметр[/var], [code]пример[/code].
  4. Потренироваться в написании комментариев вы можете в песочнице.

Комментарии к статье

ki_zu

25.01.2007

В случае с буквицей-картинкой я бы добавил, что недостатком в таком случае является то, что первая буква в абзаце пропадает и не очень весело будет с отключенными картинками/при попытке скопировать текст. В этом случае можно (и нужно, имхо) как минимум добавить в alt картинке "Д", т.е, собственно, альтернативное написание smile

Или иной способ заменить первую букву картинкой - обернуть в два спана, внутренний, с текстовой буквой - скрыть, а ко внешнему прикрепить фоновое изображение.
Вот smile

SAiNT

28.01.2007

Отключать картинки?...... :о|

Mr.Floppy

22.02.2007

>>Отключать картинки?
Когда я был диалапщиком - всегда картинки отключал. Да и на выделенке тоже - для экономии траффика. А уж через GPRS-то и подавно.

kolpeex

08.04.2007

>>Отключать картинки?
что такое картинки? big_smile

))))

03.05.2007

что такое gprs и выделенка?))) мясная вырезка знаю...
у ки_зу самый вменяемый вариант))))

справка

14.05.2007

GPRS-это пакетная передача информации, по средствам мобильной и спутниковой связи)))

Vector

16.05.2007

А я картинки не отключаю НИКОГДА!!! Потому что без них НЕИНТЕРЕСНО!!! И СКУЧНО!!!

Wechsel

16.05.2007

Хочется так же отметить, что атрибут alt так же не всегда достаточен и желательно дублировать его значение так же и в атрибут title. А так в целом верно.

HTMLCODER.exe

08.06.2007

IMHO, Буквица это...
Ну как бы выразиться...
Архаизм, что ли...

bacek

08.06.2007

Вот тут буквица сделана у нас с помощью first-letter http://noblit.ru/content/view/26/152/

Orko

09.06.2007

HTMLCODER.exe

нее, просто не ко всем сайтам подходит

lone

29.07.2007

2 ki_zu - пользуй обязательный атрибут alt.

Antizook

03.08.2007

А как сделать чтобы выводить один и тот же элемент, но прописать его в стилях.
<p><img src="d.gif" width="70" height="70" alt="" align="left" hspace="4">олго ли, коротко ли, скоро сказка сказывается, да не скоро дело делается, - приходит Иван-царевич к избушке; стоит в чистом поле избушка, на куриных лапках повертывается.</p>
ЭТО ПОНЯТНО, а если надо этот d.gif везде один и тот же ставить, то что написать в стилях и как выводить.

HTMLCODER.exe

19.08.2007

можно попробовать джаваскриптом
кто смотрел исходный код виндовских файлов помощи?
"*.chm"
ну там где в параграфе картинка подсавлена в начале
ТАК ВОТ: В ИСХОДНОМ КОДЕ Е? НЕТУ!
вместо этого стоит <p class="note">blablabla</p>
правый щелчок на картирнку видим "note.gif"
на самом деле используется джаваскрипт .
я когда эти файлы распаковывал, все в "shared.js" лежало.
замешан innerHTML и ClassName

journalist

08.01.2008

Подскажите уважаемые веб-мастера... как использовать совместно буквицу и отступ в первой строке?

P {
text-indent: 40px;
text-align: left;
line-height: 1.5em;
}

p:first-letter {
font-size: 30pt;
float: left;
background-color: #fc0;
padding: 3px;
margin-right: 4px;

Столкнулся с такой проблемой, что буквица отрывается от той строки в которой стоит...

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

09.01.2008

Уберите float: left, тогда буквица будет с отступом, но зато не станет обтекания. Так что выбирайте, что вам нужнее.

Sanya

22.01.2008

Спасибо за инфу, но для вап сайта не прокатит

Ksanytch

28.01.2008

А вот почему так получается, что я сначала записал правило обычных абзацев:
p {text-indent: 2em;
text-align: justify;
margin-top: 0.8em;
margin-bottom: 0.8em
}
а потом - буквицу примера 4:
p:first-letter.letter {
font-size: 300%;
float: left;
background-color: #fc0;
padding: 3px;
margin-right: 4px;
}
и пишу код странички:
<p class="letter">Первый абзац - буквицей.</p>
<p>Второй абзац - без буквицы.</p>
то оба абзаца оказываются не только выровнены по ширине, но и с красной строки? Буквица уползает. Вроде бы записали разные правила для разных случаев, но почему правило буквицы наследует правило обычного абзаца?

Ksanytch

28.01.2008

Ой, ляпнул. Нужно записать первое правило так:
p.letter:first-letter {

Amigos (Lebedev's)

18.04.2008

Глупости вс? это.

Единственое - спасибо Влад, статья актуальна, только неплохо было бы добавить кое-какие поправки правил верстки "хорошего тона".

Во-первых: Всякий раз, когда вы решаете использовать буквицы, важно помнить что если CSS или картинки будут сторонним образом (браузер и т.п.) отключены, ваш текст окажется некорректен. Рекомендуется вс? же всегда оставлять заменяемые на картинки буквы, скрывая их, к примеру:

<style type="text/css">
span { display: none; }
</style>

"<span>Р</span>азделим пустыню, в которой живет лев ..."

Во-вторых: поправка! Использование соседних селекторов типа P + P
не является привелегией ie6 котороый всвязи с выходом офффициально в мае уже ie8 хоть и считается устаревшим, но все же 60% населения планеты это не семечки!

а на досуге всем кто стремится к большему, интересному и сложном варианту, рекомендую заглянуть сюда +) http://www.ab.lv/ru/about/
такая буквица, и такое обтекание это действительно круто!

poiNt_3D

29.04.2008

Ух ты, это интересно откуда про льва...
smile

facer9

12.05.2008

вставила катртинку-фон. Таблица ушла вниз .а как е? поднять

букво?б

22.05.2008

? - буква йо

mr_ozio

23.05.2008

если бы ещ? ие нормально осознавал что такое :first-letter

mr_ozio

23.05.2008

если бы ещ? ие нормально осознавал что такое :first-letter

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

Имя
Комментарий

Сохранить имя (используется cookie)

Поиск по сайту

Рецепты CSS
Разделы
Теги по теме

H1...H6
HTML предлагает шесть заголовков разного уровня, которые показывают относительную важность секции, расположенной после заголовка. Так, тег H1 представляет собой наиболее важный заголовок первого уровня, а тег H6 служит для обозначения заголовка шестого уровня и является наименее значительным.

IMG
Тег IMG предназначен для отображения на веб-странице изображений в графическом формате GIF, JPEG или PNG.

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

SPAN
Тег SPAN предназначен для определения встроенных элементов документа.

CSS по теме

background-color
Устанавливает фоновый цвет элемента.

color
Определяет цвет текста элемента.

float
Определяет, по какой стороне будет выравниваться элемент, при этом остальные элементы будут обтекать его с других сторон.

font-size
Определяет размер шрифта элемента, который может быть установлен несколькими способами.

line-height
Устанавливает интерлиньяж (межстрочный интервал) текста, отсчет ведется от базовой линии шрифта. При обычных обстоятельствах расстояние между строками зависит от вида и размера шрифта и определяется браузером автоматически.

padding-right
Задает значение поля от правого края содержимого элемента.

Copyright 2002–2008 Влад Мержевич, по всем вопросам пишите по адресу: vlad@htmlbook.ru

О сайте | Планы на будущее | Использование сайта | Борьба с ошибками | Технологии | Поддержать проект