Дейв Рэгетт, 29 августа 2000 г.
Это краткое руководство по использованию стиля в Web-страницах. В нем показано, как использовать язык каскадных таблиц стилей (CSS) W3C, а также использования средств HTML в качестве альтернативы. The route will steer you clear of most of the problems caused by differerences between different brands and versions of browsers.
Чтобы таблицы стилей работали, важно, чтобы в разметке не было ошибок. Автоматически исправить ошибки разметки можно с помощью утилиты HTML Tidy. Кроме того, эта утилита располагает разметку так, чтобы ее было удобнее читать и редактировать. Рекомендую Вам регулярно запускать Tidy и проверять всю разметку, которую Вы редактируете. Tidy очень эффективен при устранении ошибок в разметке, создаваемой некорректными средствами разработки.
Это руководство научит Вас:
Начнем с установки цвета текста и фона. Это можно сделать с помощью элемента STYLE, позволяющего определить свойства стиля для тегов документа:
<style type="text/css"> body { color: black; background: white; } </style>
То, что находится между тегами <style> и </style>, записывается в специальном виде для правил стиля. Каждое правило начинается с имени тега, за которым следует список свойств стиля, заключенный в фигурные скобки. В данном примере правило соответствует тегу body. Вы увидите, что тег body определяет общий вид Web-страницы.
Каждое свойство стиля начинается с имени свойства, за которым следует двоеточие, а затем значение свойства. Если в списке имеется несколько свойств стиля, их нужно разделять точкой с запятой. В данном примере указаны два свойства - "color" устанавливает цвет текста, а "background" - цвет фона страницы. Я рекомендую всегда ставить точку с запятой, даже после последнего свойства.
Цвета могут задаваться названиями или числовыми значениями, например rgb(255, 204, 204) - густо-розовый. 3 числа представляют красный, зеленый и синий компоненты соответственно в диапазоне 0 - 255. Можно использовать и шестнадцатеричный формат, в котором этот же цвет будет представлен как #FFCCCC. Подробнее о цветах написано в следующем разделе.
Обратите внимание, что элемент style должен размещаться в заголовке (head) документа вместе с элементом title. Он не может находиться в теле элемента body.
Если Вы хотите использовать один и тот же стиль на нескольких Web-страницах, имеет смысл создать отдельную таблицу стилей, на которую будет установлена ссылка с каждой страницы. Это можно сделать следующим образом:
<link rel="stylesheet" href="style.css">
Тег LINK должен располагаться в элементе head. Для атрибута rel должно быть установлено значение "stylesheet", чтобы браузер мог определить, что атрибут href задает Web-адрес (URL) таблицы стилей.
Web-страницы гораздо лучше выглядят с большими полями. Величину левого и правого полей можно задать с помощью свойств "margin-left" и "margin-right", например
<style type="text/css"> body { margin-left: 10%; margin-right: 10%; } </style>
Это правило устанавливает ширину левого и правого поля равной 10% ширины окна, и при изменении размера окна браузера поля будут изменяться.
Чтобы немного выделить заголовки, можно начинать их с поля, установленного для элемента body, например
<style type="text/css"> body { margin-left: 10%; margin-right: 10%; } h1 { margin-left: -8%;} h2,h3,h4,h5,h6 { margin-left: -4%; } </style>
В данном примере приведены три правила стиля. Одно для элемента body, одно для элемента h1 (используется для самых главных заголовков) и одно для всех остальных заголовков (h2, h3, h4, h5 и h6). Поля заголовков добавляются к полям элемента body. Отрицательные значения используются для смещения точки начала заголовка влево относительно поля, установленного для элемента body.
В последующих разделах примеры правил стиля нужно будет помещать в элемент style в заголовке документа (если он имеется) или в связанную с документом таблицу стилей.
Браузеры достаточно хорошо выбирают пустое пространство над и под заголовками, абзацами и т.д. Две причины, чтобы, тем не менее, взять управление пустым пространством в свои руки: если Вы хотите, чтобы перед определенным абзацем или заголовком был слишком большой отступ или если Вам нужно точно контролировать расстояния вообще.
Свойство "margin-top" определяет отступ над, а "margin-below" - под объектом. Чтобы установить эти свойства для заголовка h2, запишите:
h2 { margin-top: 8em; margin-bottom: 3em; }
em - это очень полезная единица измерения, поскольку она соотносится с размером шрифта. Один em равен высоте шрифта. Используя em, Вы можете сохранить общий вид Web-страницы независимо от размера шрифта. Это куда более безопасно, чем использование пикселов или точек, которые могут вызвать проблемы у пользователей с большими шрифтами.
В текстовых процессорах обычно используются точки, например, 10pt. К сожалению, один и тот же размер точки по-разному представляется в разных браузерах. То, что в одном браузере выглядит замечательно, в другом может быть совершенно невозможно прочесть! Использование em устраняет эти проблемы.
Чтобы задать отступ над конкретным заголовком, следует создать для этого заголовка именованный стиль. Это делается с помощью атрибута class в разметке, например
<h2 class="subsection">Приступая к работе</h2>
Правило стиля записывается в виде:
h2.subsection { margin-top: 8em; margin-bottom: 3em; }
Правило начинается с имени тега, за которым следует точка, а потом значение атрибута class. Между словами и точкой не должно быть пробелов, иначе правило не будет работать. Есть и другие способы установки стиля для конкретного элемента, но атрибут class - самый гибкий.
Если за заголовком следует абзац текста, значение margin-bottom для заголовка не добавляется к значению margin-top абзаца. Вместо этого используется максимальное из этих двух значений. То же правило действует в отношении margin-top и margin-bottom независимо от того, для каких тегов они указаны.
Иногда нужно, чтобы первая строка каждого абзаца начиналась с отступа. Следующее правило стиля эмулирует традиционный способ представления абзацев в книгах:
p { text-indent: 2em; margin-top: 0; margin-bottom: 0; }
Оно задает отступ первой строки каждого абзаца равным 2 em и запрещает расстояние между абзацами.
В этом разделе описано, как установить шрифт и его размер и как использовать курсив, полужирный и другие стили.
Чаще всего используются такие стили как курсив и полужирный шрифт. Большинство браузеров представляют тег em tag курсивом, а тег strong - полужирным шрифтом. Предположим, что Вы хотите, чтобы содержимое элемента em представлялось полужирным курсивом, а содержимое элемента strong полужирным шрифтом в верхнем регистре:
em { font-style: italic; font-weight: bold; } strong { text-transform: uppercase; font-weight: bold; }
Если Вы захотите представлять все заголовки в нижнем регистре, Вы можете сделать это следующим образом:
h2 { text-transform: lowercase; }
В большинстве браузеров для представления более важных заголовков используется шрифт большего размера. Если Вы переопределите размер шрифта по умолчанию, то рискуете сделать текст слишком мелким, особенно если в качестве единиц измерения используются точки. Поэтому размеры шрифтов рекомендуется указывать в относительных единицах.
В данном примере размеры заголовков устанавливаются в процентах относительно размера, используемого для обычного текста:
h1 { font-size: 200%; } h2 { font-size: 150%; } h3 { font-size: 100%; }
Весьма вероятно, что Ваш любимый шрифт не будет доступен всем браузерам. Чтобы справиться с этой проблемой, можно перечислить несколько шрифтов в порядке предпочтения. Список гарантированно доступных шрифтов достаточно короток, поэтому рекомендуется заканчивать Ваш список одним из следующих шрифтов: serif, sans-serif, cursive, fantasy или monospace, например:
body { font-family: Verdana, sans-serif; } h1,h2 { font-family: Garamond, "Times New Roman", serif; }
В данном примере важные заголовки будут при возможности отображаться с использованием шрифта Garamond, если его нет, то Times New Roman, а если и он недоступен, то с использованием шрифта с засечками, используемого в браузере по умолчанию. Текст абзаца будет отображаться шрифтом Verdana или шрифтом без засечек, используемым в браузере по умолчанию.
Разборчивость шрифтов обычно зависит от высоты букв нижнего регистра, чем от собственно размера шрифта. Шрифты типа Verdana гораздо более разборчивы, чем шрифты типа "Times New Roman", и поэтому для текста абзацев рекомендуется использовать именно их.
Мое первое правило - избегать текста на уровне body, который бы не был вложен в элемент уровня блока типа p. Например:
<h2>Весна в Уилтшире</h2> Деревья в цвету, поют птицы, а в полях блеют ягнята.
Текст, следующий за заголовком, может в некоторых браузерах представляться некорректным шрифтом и с некорректными полями. Поэтому рекомендуется помещать весь такой текст в абзац, например
<h2>Весна в Уилтшире</h2> <p>Деревья в цвету, поют птицы, а в полях блеют ягнята.</p>
Мое второе правило - задавать семейство шрифтов для элементов pre, поскольку некоторые браузеры забывают использовать шрифты фиксированной ширины, если Вы устанавливаете размер шрифта или другие свойства для элемента pre.
pre { font-family: monospace; }
Мое третье правило - устанавливать семейства шрифтов для заголовков и элементов p и ul, если Вы планируете устанавливать границы и цвет фона для элементов типа div. Это помогает в тех случаях, когда браузер забывает использовать унаследованное семейство шрифтов и переключается на шрифт, заданный по умолчанию в настройках браузера.
h1,h2,h3,h4,h5,p,ul { font-family: sans-serif; }
Границу можно легко разместить вокруг заголовка, списка, абзаца или их группы, поместив их в элемент div. Например:
div.box { border: solid; border-width: thin; width: 100% }
Обратите внимание, что, если не установить свойство "width", некоторые браузеры слишком выносят правое поле вправо. Это можно использовать с разметкой следующим образом:
<div class="box"> Содержимое этого элемента DIV будет заключено в тонкую рамку. </div>
Имеются следующие типы границ: dotted (точечная), dashed (пунктирная), solid (сплошная), double (двойная), groove (вдавленная), ridge (выпуклая), inset (вложенная) и outset (наложенная). Свойство border-width определяет ширину. Его значения: thin (тонкая), medium (средняя) и thick (толстая); кроме того, можно задавать конкретное значение, например, 0.1em. Свойство border-color позволяет установить цвет.
Приятный эффект дает заполнение фона прямоугольника сплошным цветом или подогнанным изображением. Для этого используется свойство background. Прямоугольник можно заполнить с помощью элемента div следующим образом:
div.color { background: rgb(204,204,255); padding: 0.5em; border: none; }
Без явного определения свойства border некоторые браузеры будут изменять цвет фона только под каждым символом. Свойство padding задает некоторое расстояние между краями закрашенной области и содержащимся в ней текстом.
Можно задать различные значения этого расстояния слева, сверху, справа и снизу с помощью свойств padding-left, padding-top, padding-right и padding-bottom, например padding-left: 1em.
Предположим, Вам нужны границы не со всех сторон. С помощью семейства свойств border-left, border-top, border-right и border-bottom с соответствующим суффиксом: style, width или color можно управлять свойством border для каждой из сторон независимо, например
p.changed { padding-left: 0.2em; border-left: solid; border-right: none; border-top: none; border-bottom: none; border-left-width: thin; border-color: red; }
Здесь устанавливается красная граница вдоль нижнего и левого краев абзацев, принадлежащих классу "changed".
Вот некоторые примеры установки цветов, используемых в предыдущих разделах. Напоминание:
body { color: black; background: white; } strong { color: red }
Здесь по умолчанию устанавливается черный текст на белом фоне, но элементы strong представляются красным цветом. 16 стандартных названий цветов описаны ниже. Кроме того, можно использовать десятичные значения для красного, зеленого и синего компонентов, каждое значение должно лежать в диапазоне от 0 до 255, например, rgb(255, 0, 0) - то же самое, что red. Можно использовать и шестнадцатеричные значения цветов, которые начинаются символом '#', за которым следует шесть шестнадцатеричных цифр. Ниже имеется конвертер, позволяющий преобразовывать значения из RGB в шестнадцатеричные.
CSS можно использовать для установки цвета гипертекстовых ссылок с использованием разных цветов для непросмотренных, просмотренных и активных ссылок (то есть ссылок, на которых происходит щелчок в данный момент). Можно даже определить цвет, принимаемый ссылкой при указании на нее мышью.
:link { color: rgb(0, 0, 153) } /* для непросмотренных ссылок */ :visited { color: rgb(153, 0, 153) } /* для просмотренных ссылок */ :active { color: rgb(255, 0, 102) } /* когда ссылка нажата */ :hover { color: rgb(0, 96, 255) } /* когда указатель находится на ссылке */
Можно представлять гипертекстовые ссылки без обычного подчеркивания. Это делается путем установки для свойства text-decoration значения none, например:
a.plain { text-decoration: none }
Сслыка будет представляться без подчеркивания:
Эта ссылка <a class="plain" href="what.html">не подчеркнута</a>
Чаще всего при виде подчеркнутого текста на Web-странице люди думают, что это ссылка. Поэтому рекомендуется оставлять ссылки подчеркнутыми. Этот же аргумент применяется и в защиту цветов ссылок, поскольку чаще всего как ссылки воспринимается синий подчеркнутый текст. Поэтому рекомендуется не изменять цвет ссылок, если только цвет фона не затрудняет чтение синих ссылок.
Работая с цветом, помните, что от 5 до 10% людей страдают той или иной формой дальтонизма. Это может вызвать затруднения при различении красного и зеленого или желтого и синего. В редких случаях люди вообще не воспринимают цвета. Рекомендую избегать таких комбинаций цвета текста/фона, которые затруднят чтение текста людьми, страдающими дальтонизмом.
Стандартный набор названий цветов: белый, бирюзовый, голубой, желтый, зеленый, коричневый, красный, оливковый, пурпурный, розовый, светло-серый, серый, темно-синий, черный, ярко-зеленый, ярко-синий. Эти 16 цветов определены в HTML 3.2 и 4.01 и соответствуют основному набору VGA на персональных компьютерах. Большинство браузеров понимают более широкий набор названий, но их использование не рекомендуется.
![]() |
черный = "#000000" | ![]() |
зеленый = "#008000" |
![]() |
светло-серый = "#C0C0C0" | ![]() |
ярко-зеленый = "#00FF00" |
![]() |
серый = "#808080" | ![]() |
оливковый = "#808000" |
![]() |
белый = "#FFFFFF" | ![]() |
желтый = "#FFFF00" |
![]() |
коричневый = "#800000" | ![]() |
темно-синий = "#000080" |
![]() |
красный = "#FF0000" | ![]() |
ярко-синий = "#0000FF" |
![]() |
пурпурный = "#800080" | ![]() |
бирюзовый = "#008080" |
![]() |
розовый = "#FF00FF" | ![]() |
голубой = "#00FFFF" |
Таким образом, значение "#800080" аналогично значению "purple".
Значения типа "#FF9999" представляют цвета в виде шестнадцатеричных значений красного, зеленого и синего цветов. Первые два символа после знака # задают значение красного цвета, следующие два - зеленого, а два последних - синего. Эти числа всегда лежат в десятичном диапазоне от 0 до 255. Если Вы знаете десятичные значения, их можно преобразовать в шестнадцатеричные с помощью калькулятора, например, входящего в состав Microsoft Windows.
Новые компьютеры поддерживают тысячи и миллионы цветов, но многие более старые системы могут представлять только 256 цветов одновременно. Поэтому браузеры для них работают только с цветами фиксированной палитры. Обычно это дает эффект цветовых пятен, поскольку браузер пытается заменить цвета близкими к ним в каждой точке изображения. Эта проблема постепенно решится сама собой по мере замены старых компьютеров новыми.
Большинство браузеров поддерживают так называемую "безопасную для барузеров" палитру. В ней используется 6 равноотстоящих градаций красного, зеленого и синего цветов и их комбинаций. Выбирая цвета из этой палитры, Вы избежите пятен. Особенно это полезно для фоновых изображений.
Если в браузере используется безопасная палитра, для фона страницы используется ближайший цвет из этой палитры. Если Вы определите для фона страницы цвет, не входящий в безопасную палитру, то рискуете получить другой цвет браузера в зависимости того, используются ли на компьютере индексированные цвета или true-color.
Они составляются из цветов, в которых красный, зеленый и синий компоненты ограничены следующими значениями:
RGB | 00 | 51 | 102 | 153 | 204 | 255 |
---|---|---|---|---|---|---|
Hex | 00 | 33 | 66 | 99 | CC | FF |
Вот таблица безопасных цветов и их шестнадцатеричных значений. Спасибо за нее Бобу Штейну.
FFF FFF |
CCC CCC |
999 999 |
666 666 |
333 333 |
000 000 |
FFC C00 |
FF9 900 |
FF6 600 |
FF3 300 |
||||||
99C C00 |
CC9 900 |
FFC C33 |
FFC C66 |
FF9 966 |
FF6 633 |
CC3 300 |
CC0 033 |
||||||||
CCF F00 |
CCF F33 |
333 300 |
666 600 |
999 900 |
CCC C00 |
FFF F00 |
CC9 933 |
CC6 633 |
330 000 |
660 000 |
990 000 |
CC0 000 |
FF0 000 |
FF3 366 |
FF0 033 |
99F F00 |
CCF F66 |
99C C33 |
666 633 |
999 933 |
CCC C33 |
FFF F33 |
996 600 |
993 300 |
663 333 |
993 333 |
CC3 333 |
FF3 333 |
CC3 366 |
FF6 699 |
FF0 066 |
66F F00 |
99F F66 |
66C C33 |
669 900 |
999 966 |
CCC C66 |
FFF F66 |
996 633 |
663 300 |
996 666 |
CC6 666 |
FF6 666 |
990 033 |
CC3 399 |
FF6 6CC |
FF0 099 |
33F F00 |
66F F33 |
339 900 |
66C C00 |
99F F33 |
CCC C99 |
FFF F99 |
CC9 966 |
CC6 600 |
CC9 999 |
FF9 999 |
FF3 399 |
CC0 066 |
990 066 |
FF3 3CC |
FF0 0CC |
00C C00 |
33C C00 |
336 600 |
669 933 |
99C C66 |
CCF F99 |
FFF FCC |
FFC C99 |
FF9 933 |
FFC CCC |
FF9 9CC |
CC6 699 |
993 366 |
660 033 |
CC0 099 |
330 033 |
33C C33 |
66C C66 |
00F F00 |
33F F33 |
66F F66 |
99F F99 |
CCF FCC |
CC9 9CC |
996 699 |
993 399 |
990 099 |
663 366 |
660 066 |
|||
006 600 |
336 633 |
009 900 |
339 933 |
669 966 |
99C C99 |
FFC CFF |
FF9 9FF |
FF6 6FF |
FF3 3FF |
FF0 0FF |
CC6 6CC |
CC3 3CC |
|||
003 300 |
00C C33 |
006 633 |
339 966 |
66C C99 |
99F FCC |
CCF FFF |
339 9FF |
99C CFF |
CCC CFF |
CC9 9FF |
996 6CC |
663 399 |
330 066 |
990 0CC |
CC0 0CC |
00F F33 |
33F F66 |
009 933 |
00C C66 |
33F F99 |
99F FFF |
99C CCC |
006 6CC |
669 9CC |
999 9FF |
999 9CC |
993 3FF |
660 0CC |
660 099 |
CC3 3FF |
CC0 0FF |
00F F66 |
66F F99 |
33C C66 |
009 966 |
66F FFF |
66C CCC |
669 999 |
003 366 |
336 699 |
666 6FF |
666 6CC |
666 699 |
330 099 |
993 3CC |
CC6 6FF |
990 0FF |
00F F99 |
66F FCC |
33C C99 |
33F FFF |
33C CCC |
339 999 |
336 666 |
006 699 |
003 399 |
333 3FF |
333 3CC |
333 399 |
333 366 |
663 3CC |
996 6FF |
660 0FF |
00F FCC |
33F FCC |
00F FFF |
00C CCC |
009 999 |
006 666 |
003 333 |
339 9CC |
336 6CC |
000 0FF |
000 0CC |
000 099 |
000 066 |
000 033 |
663 3FF |
330 0FF |
00C C99 |
009 9CC |
33C CFF |
66C CFF |
669 9FF |
336 6FF |
003 3CC |
330 0CC |
||||||||
00C CFF |
009 9FF |
006 6FF |
003 3FF |
Образцы цветов безопансой палитры для большинства графических пакетов можно бесплатно загрузить с www.visibone.com.
Более старые браузеры, до Netscape 4.0 и Internet Explorer 4.0, либо не поддерживают CSS вообще или поддерживают некорректно. Для них можно управлять стилями средствами HTML.
Установить цвет можно с помощью тега BODY. В следующем примере устанавливается белый цвет фона и черный цвет текста:
<body bgcolor="white" text="black">
Элемент BODY должен располагаться до видимого содержимого Web-страницы, например, до первого заголовка. Кроме того, Вы можете управлять цветом гипертекстовых ссылок. Для этого имеется три атрибута:
Вот пример установки всех трех значений:
<body bgcolor="white" text="black" link="navy" vlink="maroon" alink="red">
Браузер может располагать мозаикой фоновое изображение, которое может задаваться Web-адресом, например
<body bgcolor="white" background="texture.jpeg" text="black" link="navy" vlink="maroon" alink="red">
На случай, если браузер не сможет представить изображение, имеет смысл указать цвет фона с помощью атрибута bgcolor. Убедитесь, что выбранные цвета не затрудняют чтение. Рассмотрим следующий случай:
<body bgcolor="black">
Большинство браузеров по умолчанию представляют текст черным цветом. В конечном итоге на странице будет черный текст на черном фоне! Многие люди страдают той или иной формой дальтонизма, например, некоторым оливковый цвет может казаться зеленым.
Другая проблема возникает, если Вы пытаетесь распечатать Web-страницу. Многие браузеры игнорируют цвет фона, но применяют цвет текста. Установка белого цвета для текста часто может привести к печати белой страницы, поэтому не рекомендуется следующее:
<body bgcolor="black" text="white">
Атрибут bgcolor можно использовать и в ячейках таблицы, например
<table border="0" cellpadding="5"> <tr> <td bgcolor="yellow">цветная ячейка таблицы</td> </tr> </table>
Таблицы можно использовать для достижения множества эффектов компоновки, и многие так и делают. В будущем, вероятно, эта роль перейдет к таблицам стилей, тк что можно будет достигать более точной разметки с меньшими усилиями.
Для выбора шрифта, его размера и цвета можно использовать тег FONT. В данном примере устанавливается только цвет:
В этом предложении есть желтое <font color="yellow">слово</font>.
Атрибут face используется для установки шрифта. В нем можно указать список шрифтов в порядке предпочтения, например
<font face="Garamond, Times New Roman">некоторый текст...</font>
Для выбора размера шрифта можно использовать атрибут size со значением от 1 до 6. Если перед числом поместить знак - или +, оно будет интерпретироваться как относительное. Если Вы хотите использовать больший размер шрифта, укажите size="+1", а если меньший - size="-1", например
<font size="+1" color="maroon" face="Garamond, Times New Roman">некоторый текст ...</font>
Следует избегать двух вещей: не выбирайте цветовые комбинации, затрудняющие чтение текста для людей, страдающих дальтонизмом. Не используйте для представления заголовков только шрифт, заголовки всегда следует размечать с помощью элементов h1 - h6 в соответствии с их важностью.
Более подробную информацию о CSS и поддерживающих их средствах разработки you можно найти на странице W3C, посвященной CSS. Там имеются ссылки на книги по HTML и CSS, например, "Raggett on HTML 4", опубликованную в 1998 году издательством Addison Wesley. См. Также "Beginning XHTML", опубликованную в 2000 году издательством Wrox Press. Более подробное описание CSS см. в издании "Cascading Style Sheets" Хокона Вим Ли и Берта Боса, опубликованном в 1999 издательством Addison Wesley, в котором CSS рассматриваются с точки зрения самих архитекторов CSS.
Я планирую дополнить это руководство несколькими страницами с описанием позиционирования в CSS и таблиц стилей для печати и звуковых браузеров.
Удачи и пишите!