Учебник CSS


Глава 1 - Основные понятия

Общие положения

До появления таблиц стилей, форматирование документов HTML представляло собой форматирование при помощи атрибутов, определяющих цвет, выравнивание, шрифты, размеры и т.д. Например, для того, чтобы представить любой отрывок текста жирным выделением, красного цвета, большого размера необходимо было прибегнуть к конструкции типа:
<B><FONT color="red" size="5">текст</FONT></B>

Естественно, что при создании документов большого объема, такое форматирование требовало огромного количества времени и сил, поскольку такую конструкцию необходимо было вставлять всякий раз, когда было необходимо выделить текст, особенно если, по прошествии какого-то времени возникала необходимость смены дизайна страницы. А если возникала необходимость применить декоративное оформление текста, ничего другого не оставалось, как только вставлять графику, что увеличивало "вес" документа, и без того сильно раздутого обилием форматирующих тэгов, а следовательно увеличивало длительность загрузки документа.

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

Кроме того, в CSS реализована замечательная возможность, задавать стиль в отдельном файле, подключаемом ко многим страницам сайта одновременно, и изменять их внешний вид редактированием одного лишь этого файла, равно как и внедрять стили внутрь форматируемых тэгов подобно их атрибутам. Существует три вида таблиц стилей, а разработчики успешно создают комбинации из стилей разных типов именно для решения сложных задач. Необходимо знать также то, что если на странице со ссылкой на внешнюю таблицу определена внедренная таблица, то последняя будет иметь более высокий приоритет, хотя самый высокий приоритет имеют включенные стили. Такой метод позволяет объединить самые лучшие качества таблиц стилей.

Синтаксис стиля

Синтаксис стиля не слишком сильно отличается от синтаксиса HTML, он записываются следующим образом:
Синтаксис: селектор {атрибут: значение}
Здесь под селектором подразумевается элемент, для которого задается стиль, далее в фигурных скобках, через ";" записываются пары атрибут:значение, где ":" является заменителем знака "=". Например, для окрашивания всех заголовков второго уровня в красный цвет достаточно просто указать в описании стиля следующее:
H2 {color: red}

Селекторы могут описывать следующие элементы:

  • тэги
    Пример: P {color: red} стиль применяется к тэгу <P>
  • тэги потомков
    Пример: H1 B {color: red} стиль применяется к тэгу <B>, находящемуся внутри заголовка первого уровня, т.е. являющимся его потомком
  • дочерние тэги
    Пример: OL>LI {color: red} стиль применяется к тэгу <LI>, который является дочерним элементом для тэга <OL>, т.е. на тэги <LI>, которые являются дочерними элементами для тэга <UL> стиль не распространяется
  • сестринские тэги
    Пример: H1+H2 {margin-top: -5mm} стиль применяется к сестринским тэгам <H1> и <H2>, которые являются дочерними по отношению к одному и тому же родительскому тэгу, например <BODY>, в данном случае уменьшает разрыв между ними
  • атрибуты тэгов
    Пример: DIV[class=red] {color: red } стиль применяется ко всем элементам, включенным в <DIV>, у которых атрибут class равен red
  • ID
    Пример: P#12 {color: red } стиль применяется к тэгу <P>, у которого идентификатор ID равен 12
  • классы
    Пример: .red {color: red} стиль применяется к любомым тэгам, у которых атрибут class равен red
  • псевдоклассы
    Пример: A:visited {color: red } стиль применяется к посещенному тэгу <A>.

В том случае, если свойств у тэга предположительно много, то их разделяют точкой с запятой:
H2 {color: red; font-size: 15pt}
Если какой либо тэг в документе вставлен внутри другого тэга, то он наследует все его свойства, и для того, чтобы задать ему особые свойства необходимо использовать следующий синтаксис:
H3 B {color: green}
Здесь назначается зеленый цвет для текста выделенного тэгами <B> и </B>, если он является заголовком третьего уровня.

Включенные таблицы стилей

Включенные таблицы стилей позволяют управлять форматированием при помощи стандартных тэгов HTML, включая определения конкретного стиля для содержимого конкретного тэга, подобно его атрибутам. Сам по себе метод включения таблиц стилей в некотором смысле противоречит основной идее каскадных таблиц стилей. Так как ключевым моментом этой технологии является управление стилями отдельных страниц или узла целиком. Явное включение стилей аналогично использованию элемента <FONT> и должно применяться только в тех случаях, когда необходимо определить стиль только небольшого фрагмента текста.
Пример: <P style="color:blue;"> стиль применяется к тэгу <P>, данный единичный абзац будет иметь синий текст.

Внедренные таблицы стилей

Внедренные таблицы стилей позволяют управлять отдельными страницами при помощи пары тэгов <STYLE> и </STYLE>. Эта пара со всем её содержимым помещается между тэгами <HTML> и <BODY>. При написании кода внедренной таблицы выбираются тэги, которые будут являться контейнерами текста. Действие таблицы стилей будет распространяться только на те фрагменты текста, которые будут заключены именно в эти тэги. Точно также, как и скрипты, таблицы стилей могут быть спрятаны от старых браузеров в комментарии <!- - и //- ->. Внедренные таблицы используют наиболее часто.
Пример:


<HTML>
<HEAD>
</HEAD>
<STYLE>
BODY {color: #000000;}
H3 {color: #0000ff;}
A {color: #ff0000;}
</STYLE>
<BODY>
содержимое
</BODY>
</HTML>

Внешние таблицы стилей

Этот метод требует создания отдельного файла таблицы с основными стилями. Такой файл должен иметь расширение файл.css. Затем необходимо связать нужные документы с данной таблицей. Нужно поместить в связываемом документе где-нибудь между тэгами <HEAD> и </HEAD> следующую строку:
<LINK rel=stylesheet href="файл.css" type="text/css">
либо

<STYLE>
@import URL("файл.css");
</STYLE>

Все содержимое будет впредь форматироваться с помощью стилей заданных в таблице файл.css. Метод очень удобен для создания узлов страниц посвященных родственным темам или принадлежащих одному владельцу, в едином хорошо продуманном и легко узнаваемом стиле.

Аппаратно-зависимые таблицы стилей

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

  • all
    Для всех устройств.
  • aural
    Для речевых синтезаторов.
  • braille
    Для устройств чтения азбуки Брайля.
  • embossed
    Для печати азбуки Брайля.
  • handheld
    Для переносных небольших портативных устройств.
  • print
    Для страничных непрозрачных материалов и для документов, просматриваемых на экране в режиме предварительного просмотра печати.
  • projection
    Для настенных презентаций, например, для проекторов.
  • screen
    Для цветных дисплеев.
  • tty
    Для устройств, использующих набор символов с фиксированной шириной, например, телетайпов, терминалов или портативных устройств с ограниченными возможностями отображения.
  • tv
    Для телевизионных приставок (низкое разрешение, цветное изображение, ограниченная прокрутка на экране, возможность передачи звука).

Существует несколько способов задания аппаратно-зависимых таблиц стилей:

  • При помощи правила @import
    <STYLE>
    @import URL("файл.css") print;
    </STYLE>
  • При помощи правила @media
    <STYLE>
    @media print{...};
    </STYLE>
  • Задать аппаратно-зависимый стиль непосредственно в элементе <LINK>
    <LINK rel="stylesheet" type="text/css" media="print, handheld" href="file.css">
  • Задать аппаратно-зависимый стиль непосредственно в элементе <STYLE>
    <STYLE media=print>
    селектор {атрибут: значение}
    </STYLE>