Компоновка фрейма css не работает должным образом в IE 6 и выше

Я пытаюсь создать макет страницы CSS, используя DIV для эмуляции фреймов.

Мне нужна фиксированная верхняя панель с фиксированной высотой, а ширина растягивается и сжимается при изменении размера страницы. (фиксированное значение, если пользователь прокручивает страницу вниз, верхняя панель всегда видна)

Ниже этого я хочу две колонки. Левый столбец имеет фиксированную ширину, а правый столбец растягивается по ширине при изменении размера окна. Оба столбца должны иметь вертикальные полосы прокрутки, когда это необходимо.

Мой код отлично работает в Chrome, но в IE полосы прокрутки не отображаются ни в левом, ни в правом столбцах.

Есть ли что-то, что я могу сделать, чтобы исправить это? Может быть, какой-нибудь javascript скажет IE правильно рисовать полосы прокрутки?

стиль:

body{
    margin: 0px;
    padding: 0px;
    border: 0px;
    overflow: hidden;
    height: 100%; 
    max-height: 100%; 
}

#framecontentTop{
    position: absolute;
    top: 0px; 
    left: 0px; 
    width: 100%; 
    height: 108px; /*Height of frame div*/
    overflow: hidden; /*Disable scrollbars. Set to "scroll" to enable*/
    background-color: navy;
    color: white;
}

#framecontent{
    position: absolute;
    top: 108px;
    left: 0px;
    bottom: 0px;    
    width: 200px; /*Width of frame div*/
    float:right;
    overflow: auto; /*Disable scrollbars. Set to "scroll" to enable*/
    background: navy;
    color: white;
    /*padding: 108px 0 0 200px; */ /*Set value to (0 0 0 WidthOfFrameDiv)*/
}


#maincontent{
    position: absolute;
    top: 108px; 
    left: 200px; /*Set left value to WidthOfFrameDiv*/
    right: 0px;
    bottom: 0px;
    float:right;
    overflow: auto; 
    background: #fff;
}


* html body { /*IE6 hack*/

}


* html #maincontent{ /*IE6 hack*/
    height: 100%; 
    width: 100%; 
}

Скрипт:

<script type="text/javascript">
/*** Temporary text filler function. Remove when deploying template. ***/
var gibberish=["This is just some filler text", "Welcome to Dynamic Drive CSS Library", "Demo content nothing to read here"]
function filltext(words){
for (var i=0; i<words; i++)
document.write(gibberish[Math.floor(Math.random()*3)]+" ")
}
</script>

html тело:

<div id="framecontentTop">
<h1>CSS Top Frame Layout</h1>
<h3>Sample text here</h3>
</div>


<div id="framecontent">
<h1>CSS Left Frame Layout</h1>
<p><script type="text/javascript">filltext(25)</script></p>
</div>


<div id="maincontent">
<h1>Dynamic Drive CSS Library</h1>
<p><script type="text/javascript">filltext(255)</script></p>
<p style="text-align: center">Credits: <a href="http://www.dynamicdrive.com/style/">Dynamic Drive CSS Library</a></p>
</div>


</body>
</html>

person Loser Ateverything    schedule 17.11.2010    source источник
comment
Пожалуйста, переформатируйте код в вашем вопросе, поле под полем ввода (текстовое поле), вы можете просмотреть свое сообщение перед его отправкой.   -  person Wouter Dorgelo    schedule 17.11.2010


Ответы (1)


Вам нужно установить высоту для элементов div #maincontent и #framecontent, иначе они никогда не будут прокручиваться, а просто будут растягиваться, чтобы соответствовать своему содержимому. Высота % может вызвать проблемы для IE и привести к неожиданным результатам (по моему скромному опыту). Вы пытались удалить IE только CSS?

Кроме того, чтобы исправить комментарий в вашем CSS, overflow: auto не отключает полосы прокрутки. Он скрывает их, когда они не нужны, и показывает, когда они нужны.

person Surreal Dreams    schedule 17.11.2010