В браузерах IE (Internet Explore) в старых версиях есть модель Layout. Что это такое?
У любого элемента на странице есть свойство hasLayout. Оно либо выставлено, либо нет. Когда у элемента есть это свойство, он начинает учитывать все элементы с таким свойством. Т.е. если у меня будет несколько элементов со свойством hasLayout, одни браузеры будут вести себя одним образом, а IE старых версий начнет выстраивать эту страницу вообще по-другому, потому что эти элементы с hasLayout реагируют между собой.
Свойство hasLayout имеют следующие элементы. Это свойство у них автоматическое, его нельзя убрать.
- html, body.
- элементы таблицы: table, tr, th, td.
- Все строчные элементы с замещаемым контентом: img, iframe, object, embed.
- hr.
- Элементы форм: input, select, textarea, fielset, legend.
Как можно задать свойство hasLayout другим элементам? См. ниже:
- Указание высоты и ширины (width, height).
- float любое значение тут же приведет в состояние hasLayout.
- Правило zoom (работает только в IE).
- Правило writing-mode.
- Правило display:inline-block.
- Указание минимальной и максимальной ширины и высоты (max-height, max-width, min-height, min-width) — только в IE 7.
- overflow, overflow-x, overflow-y — только в IE 7.
- position.
Вообще, работа модели Layout достаточно сложна. Со стороны разработчиков объяснения довольно запутаны. И в итоге в IE 8 эту модель Layout убрали.