Дейв Рэгетт  Как добавить стиль

Дейв Рэгетт, 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 на персональных компьютерах. Большинство браузеров понимают более широкий набор названий, но их использование не рекомендуется.

Названия цветов и их sRGB-значения
черный = "#000000" зеленый = "#008000"
светло-серый = "#C0C0C0" ярко-зеленый = "#00FF00"
серый = "#808080" оливковый = "#808000"
белый = "#FFFFFF" желтый = "#FFFF00"
коричневый = "#800000" темно-синий = "#000080"
красный = "#FF0000" ярко-синий = "#0000FF"
пурпурный = "#800080" бирюзовый = "#008080"
розовый = "#FF00FF" голубой = "#00FFFF"

Таким образом, значение "#800080" аналогично значению "purple".

Шестнадцатеричные значения цветов

Значения типа "#FF9999" представляют цвета в виде шестнадцатеричных значений красного, зеленого и синего цветов. Первые два символа после знака # задают значение красного цвета, следующие два - зеленого, а два последних - синего. Эти числа всегда лежат в десятичном диапазоне от 0 до 255. Если Вы знаете десятичные значения, их можно преобразовать в шестнадцатеричные с помощью калькулятора, например, входящего в состав Microsoft Windows.

Введите значение RGB ли шестнадцатеричное значение и нажмите соответствующую кнопку, чтобы выполнить преобразование
красный: Шестнадцатеричное
зеленый:
синий:

Безопасные для браузеров цвета

Новые компьютеры поддерживают тысячи и миллионы цветов, но многие более старые системы могут представлять только 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.

Что если браузеры не поддерживают CSS?

Более старые браузеры, до 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 и таблиц стилей для печати и звуковых браузеров.

Удачи и пишите!

Copyright  ©  2000 W3C ® (MIT, INRIA, Keio ), С сохранением всех прав. Применяются все нормативы W3C, связанные с ответственностью, торговыми марками, использованием документа и лицензированием программного обеспечения. Ваше взаимодействие с сайтом W3C соответствует нашим заявлениям о конфиденциальностивсех пользователей и членов консорциума.