Заголовок div находится сверху, вертикальная прокрутка div ниже с полосой прокрутки, прикрепленной только к этому div
У меня есть 2 основных divs, заголовок и список прокрутки, содержащийся в div.
Я хочу, чтобы заголовок всегда оставался наверху страницы и списком прокрутки ниже.
Полоса прокрутки должна быть прикреплена к прокручиваемому div, а не ко всей странице, т.е. Полоса прокрутки не отображается справа от заголовка, а только прокручивающийся div.
Это то, чего я пытаюсь достичь:
______________________
|_______header_______|
| |*|
| Container Div |*|
| |*|
| |*|
| |*|
| |*|
| |*|
----------------------
* = scrollbar
Макет должен быть жидким, и если окно растягивается вертикально, только контейнер div и его полоса прокрутки должны быть длиннее.
Я не хочу позиционировать заголовок position: fixed;
, так как полоса прокрутки будет справа от него, а не под ним.
Ответы
Ответ 1
HTML:
<div class="header">This is the header</div>
<div class="content">This is the content</div>
CSS
.header
{
height:50px;
}
.content
{
position:absolute;
top: 50px;
left:0px;
right:0px;
bottom:0px;
overflow-y:scroll;
}
Ответ 2
Нашел магию гибкости.
Здесь пример того, как делать фиксированный заголовок и прокручиваемый контент. Код:
<!DOCTYPE html>
<html style="height: 100%">
<head>
<meta charset=utf-8 />
<title>Holy Grail</title>
<!-- Reset browser defaults -->
<link rel="stylesheet" href="reset.css">
</head>
<body style="display: flex; height: 100%; flex-direction: column">
<div>HEADER<br/>------------
</div>
<div style="flex: 1; overflow: auto">
CONTENT - START<br/>
<script>
for (var i=0 ; i<1000 ; ++i) {
document.write(" Very long content!");
}
</script>
<br/>CONTENT - END
</div>
</body>
</html>
* Преимущество гибкого решения заключается в том, что контент не зависит от других частей макета. Например, для содержимого не требуется знать высоту заголовка.
Для полной реализации Holy Grail (заголовок, нижний колонтитул, навигация, сторона и содержимое), используя гибкий дисплей, перейдите к здесь.
Ответ 3
Вот демон . Используйте position:fixed; top:0; left:0;
, чтобы заголовок всегда находился на вершине.
#header {
background:red;
height:50px;
width:100%;
position:fixed;
top:0;
left:0;
}.scroller {
height:300px;
overflow:scroll;
}
Ответ 4
Вам нужно использовать js для повышения высоты тела div
<html><body>
<div id="head" style="height:50px; width=100%; font-size:50px;">This is head</div>
<div id="body" style="height:700px; font-size:100px; white-space:pre-wrap; overflow:scroll;">
This is body
T
h
i
s
i
s
b
o
d
y
</div>
</body></html>