Наследование и переопределение   

При обсуждении технических спецификаций зачастую бывает благотворно вникнуть в толк наименования. В технике принято верно определять в наименовании суть и предназначение эталона либо спецификации. Изложение жанров отображения элементов HTML-разметки носит наименование "Каскадные таблицы жанров". Со словом "жанров" все больше либо менее ясно. Слово "таблицы" подразумевает комплект свойств элемента разметки, тот, что дозволено представить в виде строки в таблице свойств, т.е. элементы разметки - строки, а свойства - столбцы. А вот слово "каскадные" требует пояснения.

Во-первых, существует иерархия элементов разметки (дерево объектов на странице), во-вторых, свойства этих объектов могут наследоваться. Таким образом, в дереве объектов образуется ветвь, которая ведет к листу дерева - элементу разметки, скажем, элементу списка либо параграфу. Его свойства определяются элементами разметки, в которые вложен элемент и описателями жанра для самого этого элемента:

Это предисловие первого раздела, тот, что сдвинут на 10 пикселей вправо касательно левого края параграфа и на 10 пикселей вниз касательно стандартной границы параграфа.
Это предисловие второго раздела, тот, что сдвинут касательно предыдущего раздела на 10 пикселей, а касательно параграфа на 20 пикселей. Данный раздел имеет красную строку с отступом в 10 пикселей и смещен касательно предыдущего раздела на 20 пикселей.
  • первый элемент списка
  • второй элемент списка
Список сдвинут относительного второго раздела на 10 пикселей, а касательно нынешнего параграфа на 30 пикселей. Первая строка не является строкой начала параграфа, следственно на нее отступ не распространяется (только в Netscape).

Прeдыдущий текст закодирован в терминах разделов и списка дальнейшим образом:

<div style="margin-left:10px;margin-top:10px;">
Это предисловие первого раздела, тот, что сдвинут на 10 пикселей вправо касательно левого края параграфа и на 10 пикселей вниз касательно стандартной границы параграфа.
<div style="margin-left:10px;margin-top:20px;
text-indent:10px;font-style:italic;">
Это предисловие второго раздела, тот, что сдвинут касательно предыдущего раздела на 10 пикселей, а касательно параграфа на 20 пикселей. Данный раздел имеет красную строку с отступом в 10 пикселей и смещен касательно предыдущего раздела на 20 пикселей.
<ul style="margin-left:10px;">
<li>1-й элемент списка
<li>2-й элемент списка
</ul>
Список сдвинут относительного второго раздела на 10 пикселей, а касательно нынешнего параграфа на 30 пикселей. Первая строка не является строкой начала параграфа, следственно на нее отступ не распространяется (только в Netscape).
</div>
</div>

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

Когда трактование некоторого феномена HTML-разметки растягивается на несколько параграфов, то благотворно воспользоваться графической схемой построения страницы, которая приведена ниже:

 

При применении жанров действуют следующие правила старшинства жанров:

Не все признаки жанра могут наследоваться. Скажем, "набивка" (отступ оглавления элемента от его границ) элемента BODY не наследуется вложенными в него элементами и определяется по умолчанию либо прописывается отдельно для всякого элемента. Алгорифмы наследования в IE и в NN различные, следственно для солидарности отображения элементов следует прописывать жанр по максимуму признаков, дабы добиться единообразия при отображении.

далее...