Структура кадра CSS не работает должным образом в IE 6 и выше - PullRequest
0 голосов
/ 17 ноября 2010

Я пытаюсь создать макет страницы 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 body:

<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>

1 Ответ

0 голосов
/ 17 ноября 2010

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

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

...