Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции 2005 / P8 / CSS учебник.doc
Скачиваний:
32
Добавлен:
16.04.2013
Размер:
468.99 Кб
Скачать

Img { float: left } /* верно для css1 */

IMG { float: left top } /* "top" недопустимое значение

для 'float' */

IMG { background: "red" } /* в CSS1 ключевые слова не

закавычиваются */

IMG { border-width: 3 } /* должна быть указана

размерность числа, */

/* выражающего значение длины */

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

IMG { float: left }

IMG { }

IMG { }

IMG { }

UA, совместимый с будущей спецификацией CSS, может отработать какую - либо из остальных строк надлежащим образом.

  • неправильная приставка к зарезервированному слову игнорируется вместе со всем последующим, вплоть до первой следующей точки с запятой (;) либо парных фигурных скобок ({}) включительно. Например, пусть мы имеем таблицу стилей:

@three-dee {

@background-lighting {

azimuth: 30deg;

elevation: 190deg;

}

H1 { color: red }

}

H1 {color: blue}

где '@three-dee' - недопустимое выражение для CSS1. Следовательно, вся строка с "собачкой" (вплоть до третьих правых фигурных скобок включительно) игнорируется.

UA с поддержкой CSS1 пропускает изъятое выражение, фактически сокращая таблицу стилей до:

H1 {color: blue}

Более подробно:

Таблица стилей CSS, для любой версии CSS, состоит из перечня директив (statements). Есть два вида директив: предустановки и установки. Возле директив допускаются промежутки (пробелы, табуляция, новые строки).

Таблица стилей CSS часто вставляется в документы HTML, и для сокрытия таблицы стилей от более ранних UA, желательно вставлять ее внутри комментариев HTML. Знаки комментариев HTML "" могут быть расположены перед, после и охватывая утверждения. Они могут отделяться интервалами.

Предустановки начинаются с зарезервированных слов с приставкой в виде знака "собачки" '@' (к примеру: @import', '@page') и идентификатора. Идентификатор может состоять из букв, цифр, черточек и спецсимволов (определение ниже).

Предустановка состоит из всего, что находится до следующей точки с запятой (;) включительно. UA для CSS, встречая предустановку, начинающуюся со слова с приставкой, иной чем слово '@import', игнорируют всю предустановку и продолжают отработку после ее окончания. Также игнорируется любая предустановка, начинающаяся с '@import', если она не располагается вверху таблицы стилей, скажем, после какого-либо правила (даже игнорируемого). Рассмотрим пример.

Пусть анализатор CSS1 обрабатывает следующую таблицу стилей:

@import "subs.css";

H1 { color: blue }

@import "list.css";

Вторая предустановка '@import' для CSS недопустима. Анализатор CSS1 пропускает всю предустановку, преобразуя таблицу стилей к следующему виду:

@import "subs.css";

H1 {color: blue}

Блок начинается с левых фигурных скобок ({) и кончается правыми (}). Между ними могут быть различные знаки, включая круглые (()), квадратные ([]) и фигурные скобки, которые всегда присутствуют в анализируемых парах и могут быть вложенными. Одинарные кавычки (') и двойные кавычки ("), также присутствующие в анализируемых парах, и знаки между ними воспринимаются как строка (см определение строки в примечании B). Ниже приведен пример блока; обратите внимание, что правая скобка между кавычками не воспринимается как открытие скобки в блоке, и что вторая одинарная кавычка является пропускаемым символом, а не рассматривается как открытие кавычек:

{ causta: "}" + ({7} * '\'') }

Установка состоит из селектора-строки, за которым следует блок - определение. Селектор-строка состоит из всего, что находится вплоть до первой левой фигурной скобки, исключая последнюю. Установка, начинающаяся с некорректной для CSS1, опускается.

К примеру, обработчик CSS1 встречает следующую таблицу стилей:

H1 { color: blue }

P[align], UL { color: red; font-size: large }

P EM { font-weight: bold }

Вторая строка примера содержит селектор-строку, недопустимую для CSS1. UA для CSS1 должен пропустить эту установку и привести таблицу стилей к следующему виду:

H1 { color: blue }

P EM { font-weight: bold }

Блок-определение начинается с левой фигурной скобки ({) и заканчивается обнаруженной правой фигурной скобкой. Между ними располагается перечень из определений (0 или больше), разделенных точками с запятой (;).

Определение состоит из свойства, двоеточия и значения, каждое из которых может отделяться пробелами. Как указывалось ранее, свойство является идентификатором. В значении могут быть использованы разные символы, однако в анализируемых парах должны присутствовать круглые скобки (()), квадратные скобки ([]), фигурные скобки ({}), одинарные кавычки (') и двойные кавычки ("). Круглые, квадратные и фигурные кавычки могут быть вложенными. Внутри кавычек символы воспринимаются как строки.

Чтобы гарантировать возможность в будущем вводить новые свойства и новые значения для существующих свойств, UA должно опускать определение с некорректным названием свойства или некорректным значением свойства. Каждое из свойств CSS1 имеет собственные синтаксические и семантические ограничения значений, которое оно может принимать.

Например, допустим, что обработчик CSS1 встретил следующую таблицу стилей:

H1 { color: red; font-style: 12pt }

P { color: blue; font-vendor: any; font-variant:

small-caps }

EM EM { font-style: normal }

Второе определение в первой линии имеет недопустимое значение '12pt'. Второе определение во второй линии содержит неопределенное свойство 'font-vendor'. Обработчик CSS1 пропустит эти определения, сокращая таблицу стилей до:

H1 { color: red; }

P { color: blue; font-variant: small-caps }

EM EM { font-style: normal }

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

Всегда соблюдаются следующие правила:

  • все таблицы стилей CSS независимы от регистра, исключая части, не находящиеся под контролем CSS. Например, в CSS1 названия семейства шрифта и URL могут зависеть от внешних обстоятельств. Также зависимые от внешних обстоятельств атрибуты для CLASS и ID находятся под контролем HTML [2].

  • для CSS1 селекторы (имена, классы и ID элемента) могут включать только символы A-Z, 0-9 и символы Unicode 161-255, плюс черточку (-); они не могут начинаться с черточки или цифры; они могут также включать непечатаемые и символы Unicode в виде цифрового кода (см. ниже).

  • обратный слеш, после которого идут не более четырех шестнадцатеричных цифр (0..9A..F), представляет собой символ Unicode с указанным числом.

  • любой символ за исключением шестнадцатеричной цифры, может быть пропущен для игнорирования его специального значения, путем установки перед ним обратного слеша. Например: "\"" - строка, состоящая из одной двойной кавычки.

  • два предшествующих пункта определяют переходы по обратному слешу. Такие переходы всегда считаются частью идентификатора, за исключением случаев, когда они находятся внутри строки (т.е. "\7B" - это не пунктуация, даже если присутствует "{", а "\32" допускается в начале имени класса, даже если "2" - нет).

Примечание: атрибут HTML CLASS допускает больше символов в названии класса, чем установлено для вышеназванных селекторов. В CSS1 эти символы будут пропущены или транслитерированы в числа Unicode: "B&W?" может быть написано в виде "B\&W\?", или "B\26W\3F", "??????" (Greek: "kouros") может быть написано как "\3BA\3BF\3C5\3C1\3BF\3C2". Ожидается, что в последующих версиях CSS непосредственно можно будет вводить больше символов.

В приложении В дана грамматика CSS1.