HTML / CSS - нет 100% высоты на div в IE - PullRequest
2 голосов
/ 23 марта 2010

Хорошо, у меня проблема - и я бы хотел ее исправить.

Я использую мой любимый способ настройки простого макета верхнего / нижнего колонтитула. Проблема в том, что любые элементы, которые я добавляю в div «content» моего макета, не могут быть расширены до 100% в Internet Explorer (насколько я знаю, только в IE). Я понимаю, что для элемента 'content' не объявлена ​​высота, но из-за стиля его позиционирования (объявление абсолютного верха и низа) элемент заполняет нужную область. (Элемент содержимого имеет определенный цвет фона, поэтому вы можете видеть, что div фактически заполняет как верхний, так и нижний колонтитулы.)

Так что моя проблема в том, что, так как div явно расширяется между двумя, почему ребенок не может быть установлен на 100%, чтобы заполнить эту область? Если у кого-нибудь есть какие-то решения, я бы с удовольствием их услышал. (Я ищу решение, которое не будет включать в себя проектирование с использованием совершенно другого макета ... или, по крайней мере, возможно, объяснение того, почему это происходит. Я предполагаю, что на данный момент это из-за отсутствия декларации высоты - - но div расширен, поэтому я не понимаю!)

Вот код, используемый на странице:

<!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 name="robots" content="noindex" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>No 100% height on 'content' child div in IE</title>
    </head>
    <style>
    html, body {
     width:100%;
     height:100%;
     margin:0px;
     padding:0px;
    }
    body {
     position:relative;
    }
    #wrapper {
     position:absolute;
     top:0px;
     width:960px;
     height:100%;
     left:50%;
     margin-left:-480px;
    }
     #header{
      position:absolute;
      top:0px;
      left:0px;
      width:100%;
      height:200px;
      background-color:#999;
     }
     #content{
      position:absolute;
      top:100px;
      bottom:50px;
      left:0px;
      width:100%;
      background-color:#F7F7F7;
     }
      #content_1{
       width:200px;
       background-color:black;
       height:100%;
       float:left;
      }
     #footer{
      position:absolute;
      bottom:0px;
      left:0px;
      width:100%;
      height:50px;
      background-color:#999;
     }  
    </style>

    <body>
    <div id="wrapper">
     <div id="header">
        </div>
        <div id="content">
         <div id="content_1">
            </div>
        </div>
        <div id="footer">
        </div>
    </div>
    </body>
    </html>

1 Ответ

4 голосов
/ 23 марта 2010

Попробуйте это:

#content_1{
width:200px;
background-color:black;
height:100%;
position: absolute;
}

IE 7 и ниже присваивают значение с именем hasLayout элементам, которые требуют позиционирования. Иногда, чтобы выработать такие маленькие причуды, вы должны заставить элемент иметь макет, что в данном случае означает установку его положения на абсолютное значение.

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