Опубликован: 14.08.2003 | Уровень: для всех | Доступ: платный
Лекция 1:

Назначение и применение CSS

Лекция 1: 1234 || Лекция 2 >

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

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

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


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

<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>первый элемент списка
<LI>второй элемент списка
</UL>
 Список сдвинут относительно второго раздела
 на 10 пикселов, а относительно текущего 
 параграфа — на 30 пикселов. Первая строка не
 является строкой начала параграфа, поэтому на
 нее отступ не распространяется (только в 
 Netscape). 
</DIV>
</DIV>

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

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

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


Рис. 1.3.
  • сначала применяются стили браузера по умолчанию;
  • стили браузера по умолчанию переопределяются прилинкованными стилями (элемент LINK заголовка документа);
  • прилинкованные стили переопределяются описаниями стилей в элементе STYLE ;
  • стили элемента STYLE переопределяются атрибутом STYLE в любом из элементов разметки.

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

Лекция 1: 1234 || Лекция 2 >
Наталья Алмаева
Наталья Алмаева
Россия
Светлана Казьмина
Светлана Казьмина
Россия, Волгодонск

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4809102612104watchdog( )../bootstrap.inc:0
23.4812102614568module_invoke( )../bootstrap.inc:967
33.4812102616424call_user_func_array ( )../module.inc:462
43.4812102616760devel_watchdog( )../module.inc:462
53.4813102617608decode_entities( )../devel.module:382
63.4814102619528drupal_error_handler( )../devel.module:340
73.4814102623136watchdog( )../common.inc:663
83.4814102625200module_invoke( )../bootstrap.inc:967
93.4814102627056call_user_func_array ( )../module.inc:462
103.4814102627392devel_watchdog( )../module.inc:462
113.4815102628088decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4809102612104watchdog( )../bootstrap.inc:0
23.4812102614568module_invoke( )../bootstrap.inc:967
33.4812102616424call_user_func_array ( )../module.inc:462
43.4812102616760devel_watchdog( )../module.inc:462
53.4813102617608decode_entities( )../devel.module:382
63.4814102619528drupal_error_handler( )../devel.module:340
73.4814102623136watchdog( )../common.inc:663
83.4814102625200module_invoke( )../bootstrap.inc:967
93.4814102627056call_user_func_array ( )../module.inc:462
103.4814102627392devel_watchdog( )../module.inc:462
113.4815102628088decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4809102612104watchdog( )../bootstrap.inc:0
23.4812102614568module_invoke( )../bootstrap.inc:967
33.4812102616424call_user_func_array ( )../module.inc:462
43.4812102616760devel_watchdog( )../module.inc:462
53.4813102617608decode_entities( )../devel.module:382
63.4821102619720drupal_error_handler( )../devel.module:340
73.4821102623408watchdog( )../common.inc:663
83.4821102625472module_invoke( )../bootstrap.inc:967
93.4821102627328call_user_func_array ( )../module.inc:462
103.4821102627664devel_watchdog( )../module.inc:462
113.4822102628440decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4809102612104watchdog( )../bootstrap.inc:0
23.4812102614568module_invoke( )../bootstrap.inc:967
33.4812102616424call_user_func_array ( )../module.inc:462
43.4812102616760devel_watchdog( )../module.inc:462
53.4813102617608decode_entities( )../devel.module:382
63.4821102619720drupal_error_handler( )../devel.module:340
73.4821102623408watchdog( )../common.inc:663
83.4821102625472module_invoke( )../bootstrap.inc:967
93.4821102627328call_user_func_array ( )../module.inc:462
103.4821102627664devel_watchdog( )../module.inc:462
113.4822102628440decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4827102612648watchdog( )../bootstrap.inc:0
23.4827102614712module_invoke( )../bootstrap.inc:967
33.4827102616568call_user_func_array ( )../module.inc:462
43.4827102616904devel_watchdog( )../module.inc:462
53.4827102617608decode_entities( )../devel.module:382
63.4828102619528drupal_error_handler( )../devel.module:340
73.4828102623136watchdog( )../common.inc:663
83.4828102625200module_invoke( )../bootstrap.inc:967
93.4828102627056call_user_func_array ( )../module.inc:462
103.4828102627392devel_watchdog( )../module.inc:462
113.4828102628088decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4827102612648watchdog( )../bootstrap.inc:0
23.4827102614712module_invoke( )../bootstrap.inc:967
33.4827102616568call_user_func_array ( )../module.inc:462
43.4827102616904devel_watchdog( )../module.inc:462
53.4827102617608decode_entities( )../devel.module:382
63.4828102619528drupal_error_handler( )../devel.module:340
73.4828102623136watchdog( )../common.inc:663
83.4828102625200module_invoke( )../bootstrap.inc:967
93.4828102627056call_user_func_array ( )../module.inc:462
103.4828102627392devel_watchdog( )../module.inc:462
113.4828102628088decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4827102612648watchdog( )../bootstrap.inc:0
23.4827102614712module_invoke( )../bootstrap.inc:967
33.4827102616568call_user_func_array ( )../module.inc:462
43.4827102616904devel_watchdog( )../module.inc:462
53.4827102617608decode_entities( )../devel.module:382
63.4835102619720drupal_error_handler( )../devel.module:340
73.4835102623408watchdog( )../common.inc:663
83.4835102625472module_invoke( )../bootstrap.inc:967
93.4835102627328call_user_func_array ( )../module.inc:462
103.4835102627664devel_watchdog( )../module.inc:462
113.4835102628440decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.4827102612648watchdog( )../bootstrap.inc:0
23.4827102614712module_invoke( )../bootstrap.inc:967
33.4827102616568call_user_func_array ( )../module.inc:462
43.4827102616904devel_watchdog( )../module.inc:462
53.4827102617608decode_entities( )../devel.module:382
63.4835102619720drupal_error_handler( )../devel.module:340
73.4835102623408watchdog( )../common.inc:663
83.4835102625472module_invoke( )../bootstrap.inc:967
93.4835102627328call_user_func_array ( )../module.inc:462
103.4835102627664devel_watchdog( )../module.inc:462
113.4835102628440decode_entities( )../devel.module:382