Как мне добиться следующего в HTML? - PullRequest
3 голосов
/ 12 марта 2010

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

Это показано ниже: Изображение макета с заголовком с фиксированной высотой и областью прокрутки http://img709.imageshack.us/img709/9242/tmphh.png

Что мне делать в HTML, чтобы он работал во всех браузерах, включая IE6?

РЕДАКТИРОВАНИЕ: КОД ИЗМЕНЕН, работает в IE6, Firefix, Chrome, однако IE6 показывает 4 полосы прокрутки !!! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <style> HTML,BODY { height:100%; } .fullContainer { width:80%; height:40%; overflow:auto; position:relative; } /*-- Can only modify these --*/ .header { position: absolute; top: 0; left: 0; width: 100%; height:40px; background-color:#eeeeee; } .content { position: absolute; top: 40px; left: 0; right: 0; bottom: 0; overflow:auto; } .contentContainer { height:100%; } * html .fullContainer{ /*IE6 hack*/ padding: 40px 0 0 0; } * html .content{ /*IE6 hack*/ height: 100%; width: 100%; } /*-- Can only modify these --*/ </style> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <div>before content...</div> <div class="fullContainer"> <div class="header">Header</div> <!-- <div class="contentContainer"> --> <div class="content"> This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content.This is scroller content. <div style="width:1000px;background-color:#ccffcc;">long text</div> </div> <!-- </div> --> </div> <div>after content...</div> </body> </html>

Ответы [ 4 ]

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

Поскольку вам нужна внутренняя прокрутка в нижнем элементе, я предполагаю, что вы хотите, чтобы нижний элемент был плавным как по вертикали (скорее - по размеру окна браузера, а не по содержимому), так и по горизонтали. (Горизонтальная текучесть действительно не имеет большого отношения к какому-либо решению вертикального смещения.) И поскольку это так, ваш заголовок должен иметь заданную высоту. Если нижний div не должен быть вертикальным, вы можете просто установить height на желаемое число и объявить overflow-y:scroll.

Для вертикальной текучести вам нужно будет использовать конфликтующие абсолютные позиции , установив нижний элемент div так, чтобы он начинался чуть ниже того места, где заканчивается верхний элемент div, и опускался до нижней части страницы. По существу:

#bottomDiv {
  position: absolute;    
  top: 100px; /* however tall your top div is */
  left: 0;
  right: 0;
  bottom: 0;
}

Обратите внимание на выражение, которое вам придется использовать для IE6 (изложено в статье, ссылки на которую приведены выше).

Обновление Почему вы не можете изменить .fullContainer? Если это просто в другой таблице стилей, попробуйте в любом случае. Как работает CSS, вы можете переопределить все, что было до него. Итак, если в вашей редактируемой области вы можете добавить правило fullContainer (которое вы должны иметь, если вообще редактируете CSS-файл), вы, скорее всего, можете переопределить этот div, чтобы избавиться от объявлений ширины и высоты ( width:auto и height:auto должны сделать) и аналогичным образом сбросить или переопределить другие вещи (например, overflow:hidden при необходимости).

Другой вариант - попытаться заставить оба желаемых (новых) верхних и нижних делителя использовать position:fixed, но учтите, что в некоторых браузерах фиксированные позиции общеизвестно глючат, и вы, возможно, захотите избежать их как хрупких для разметки. весь ваш сайт.

Обновление 2 Для IE6 вы используете 100% высоты плюс отступы, что означает, что он будет автоматически слишком высоким. В статье я указываю на , ищите «Создание исключения для IE5 и IE6» и используйте эти выражения - если вы не можете поместить их в отдельные таблицы стилей, просто используйте взлом звездой, который вы уже использовали. использование.

2 голосов
/ 12 марта 2010

Простой способ симулировать это - дать компоненту заголовка следующий атрибут:

div.header {position: fixed;}

И присвоить приведенному выше div фиксированную высоту, но не для нижнего div.

1 голос
/ 12 марта 2010

я думаю, что это должно сработать

<body style="margin:0;width:100%; height:100%; overflow:hidden;">
  <div id="HeaderDiv" style="width:100%; height:100px; overflow:hidden; float:left;">
  </div>
  <div id="FluidDiv" style="width:100%; height:100%; overflow:scroll; float:left;">
  </div>     
</body>
1 голос
/ 12 марта 2010

Это делает это?

HTML

<body>
    <div id="header">

    </div>

    <div id="wrapper">

    </div>
</body>

CSS:

    *{padding:0;margin:0}
    body{overflow:hidden}
    #header,#wrapper{width:100%}
    #header{position:fixed;top:0;left:0;height:100px;background-color:#F00}
    #wrapper{position:fixed;height:100%;margin-top:100px;overflow:scroll}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...