Отличный обзор – и вообще сайт htmlbook.ru лучшее справочное руководство по HTML и CSS на русском языке. Отличает прежде всего строгая структура сайта.

Что ещё за HasLayout и почему он так важен?

Некоторые ошибки в Internet Explorer можно обойти, установив для элемента «лейаут». Большинство пользователей не подозревают о значениях «лейаута» применяемого к элементу. Данный документ объясняет, что происходит, когда элемент содержит «лейаут» и последствия этого.

Прим. переводчика: Английское слово layout можно перевести как «макет», но в данном контексте оно обозначает внутреннюю структуру данных IE. Чтобы не было путаницы с терминологией, в статье layout указывается как «лейаут».

Начнем с того, что есть два набора элементов.

  • Элементы, которые полагаются на родителя для определения размеров и упорядочивания их содержания.
  • Элементы, которые отвечают за размеры и упорядочивание собственного содержания.

В основном, элементы в Internet Explorer не отвечают за организацию самих себя. Тег <div> или <p> может иметь положение, как в исходном коде и потоке документа, но их контент упорядочивает ближайший предок с лейаутом (обычно <body>). Такие элементы полагаются на предка, чтобы он сделал для них всю тяжелую часть по определению размера и единиц измерения.

Элемент, который отвечает за размеры и расположение элементов, может быть предком, а не только непосредственным родителем. Основным преимуществом каждого элемента, у которого нет собственного лейаута, является производительность и простота.

Итак, что означает «имеет лейаут»?

* Если коротко, включение лейаута означает, что элемент отвечает за размеры и позиционирование самого себя и возможно любых дочерних элементов (если дочерний элемент имеет собственный лейаут, то он определяет размеры).

* Некоторые «фиксированные» элементы, иными словами, имеющие ограничения размера всегда имеют лейаут. Например, кнопки, изображения, поля форм, теги <select> и <marquee> всегда исходного размера, если ширина и высота явно не указана.

* Иногда элементы, которым обычно не требуется информация о лейаут, вроде <div> или <span>, могут иметь специфичные свойства, устанавливающие лейаут для применения некоторых параметров — к примеру, элемент должен иметь лейаут, чтобы получить полосы прокрутки.

* Как только лейаут применяется, устанавливается флаг hasLayout. Это свойство возвращает true при обращении к нему.

Источник: htmlbook.ru – Обзор HasLayout.

Обзор HasLayout
Метки: