Когда речь идет о разметке страницы в CSS, знаете ли вы, что значит для элемента «иметь разметку» в Internet Explorer? Если нет, вы можете упустить полезный инструмент для преодоления ошибок CSS в этом браузере. Опять же, вы можете упустить объяснение тех самых ошибок, с которыми вы имеете дело.
Во внутренней работе Internet Explorer каждый элемент на странице работает в одном из двух режимов, когда дело доходит до макета. Либо он позволяет своим предкам влиять на позиционирование своего содержимого, либо он просто захватывает прямоугольную область страницы и выполняет всю компоновку содержимого в этом прямоугольнике. Говорят, что элементы, которые выполняют последнее, имеют «макет», потому что вы можете обнаружить их, проверив свойство hasLayout только для IE с помощью JavaScript.
Оказывается, что принуждение элемента иметь «макет» — это один из способов преодолеть ошибки CSS в Internet Explorer. Например, в Internet Explorer есть ряд ошибок, из-за которых плавающие элементы и их потомки неправильно позиционируются из-за влияния их родителей или других предков. Обманив родительского элемента плавающего элемента в «имеющий макет», вы можете устранить это нежелательное влияние, которое часто позволяет правильно разместить плавающий элемент.
К сожалению, поскольку элементы, которые имеют «макет», игнорируют своих предков, они не всегда ведут себя так, как вы ожидаете. Например, они не могут иметь переполненный контент и не будут обтекать плавающие элементы. По сути, «наличие разметки» дает Internet Explorer разрешение обходить некоторые из его ошибочных кодов CSS с помощью более простого кода, который часто можно выполнить, игнорируя стандарты разметки страницы.
Заставить элемент «иметь макет» можно так же просто, как присвоить ему фиксированную ширину. Самым известным применением этой техники является Holly Hack , хотя, когда она была опубликована в 2003 году, никто не знал о «макете»… это был просто хак, который, казалось, работал. Теперь, когда разработка Internet Explorer началась в полном разгаре, а команда IE разговаривает с группами по стандартам , мы начинаем понимать эти неясные детали браузера, которые объясняют более шизофренические аспекты его поведения.
Недавно опубликованная статья Microsoft дает краткое, но полезное описание «наличия макета» — какие элементы у него есть, как другие элементы могут его получить и как они ведут себя, когда они это делают. Статья откровенно откровенна о неисправности браузера. Если вы хотите получить еще больше подробностей, вы можете провести тихий день с « Имея макет» , длинным и подробным трактатом на тему «имея макет» и многими способами, которые могут помочь или помешать вашим усилиям по макетированию CSS в Internet Explorer.