Как называется эта ошибка IE CSS? (Двойная вертикальная обивка) - PullRequest
4 голосов
/ 01 декабря 2009

(Обратите внимание, что это не ошибка с двумя полями. На данный момент я называю это ошибкой с двойным вертикальным заполнением, если у кого-то еще нет более умного / задокументированного имени для этого?)

Как раз тогда, когда я подумал, что видел все причудливые ошибки IE CSS, я создал простой тестовый пример, который продолжает меня смущать. Страница ниже выглядит и прекрасно работает в FF, Opera и др. Однако IE 6 и IE 7 кажутся запутанными. Я позволю документу, который я вставлю ниже, говорю сам за себя.

Редактировать: Я поместил это по следующему URL: http://jsbin.com/efele
Откройте его в IE и снова в FF. Сравните.

Мой вопрос: как называется эта ошибка? (Я где-то пропустил это? На эта страница ?) Я знаком с 3-х пиксельной ошибкой jog и двойной (горизонтальной) ошибкой margin и множеством других ошибок, связанных с float. Но ... дублирование по вертикали дублируется? (И положить в неправильном месте, чтобы загрузить.)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>IE bork!</title>
<style type="text/css">
html, body {
 margin:0;
 padding:0;
}
#container {
 border:1px solid red;
 background-color:#CC99CC;
 width:800px;
 margin:0 auto;
 padding-top:100px;
}
#sidebar {
 float:left;
 display:inline;
 width:200px;
 border:1px solid blue;
 background-color:#00CCFF;
}
#content {
 float:right;
 display:inline;
 width:510px;
 border:1px solid green;
 background-color:#66CC99;
}
.clear {
 clear:both;
 /* height:0px; <<< setting height seems to be the only thing that makes this work as expected?!? */
 background-color:#CCCCCC; /* bg color here is just for debugging */
}
</style>
</head>
<body>
<div id="container">
    <div id="sidebar">I am the sidebar</div>
    <div id="content">I am the content</div>
    <div class="clear"><!-- clear! --></div>
</div>
<p>There should be 100px of space above the two floats, but <em>no</em> space below them...</p>
</body>
</html>

P.S., я в конце концов понял, как успокоить IE по этому вопросу. Решение (явная установка высоты в моем «чистом» div) закомментировано, чтобы показать ошибку. Я только хотел бы, чтобы у меня были последние несколько часов моей жизни, чтобы я наткнулся на реальную проблему / решение!

Спасибо!

Ответы [ 2 ]

3 голосов
/ 01 декабря 2009

Учитывая решение, которое вы нашли, похоже, это hasLayout IE. ( Явно устанавливая высоту на вашем чистом наборе, установите hasLayout в true в глазах IE )

2 голосов
/ 01 декабря 2009

С другой стороны, в тех случаях, когда указание высоты по какой-то причине не сработало, я часто обнаруживал, что включение zoom:1; в любое время, когда мне нужен hasLayout для запуска в IE, спасает жизнь. Каждый раз, когда у меня возникают такие странные проблемы с макетом в IE, я всегда пытаюсь это понять, если это проблема обновления макета. (Тогда, если это не сработает, продолжайте стучать головой по клавиатуре)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...