我正在尝试在CSS中创建一个简单的固定高度框,标题位于顶部,而元素的任意长度列表如下。我希望列表仅 可滚动,而标题仍然可见并固定在顶部。
这是一个Codepen:
https://codepen.io/anon/pen/qJRBpo?editors=1100
<div class="outerdiv">
<h4>This is my title</h4>
<div class="innerdiv">
<ul>
<li> List item 1 </li>
<li> List item 2 </li>
<li> [...] </li>
</ul>
</div>
</div>
我认为在overflow: auto
或.innerdiv
元素上设置ul
就足够了,但是这两个元素似乎根据<ul>
的内容来确定大小,完全忽略了.outerdiv
框的边界。
我还没有找到一种方法来限制.innerdiv
或ul
元素增长到不大于.outerdiv
的大小。它们总是独立于布局的其余部分调整大小,然后,根据overflow: visible|auto
上的.outerdiv
设置,我能做的最好的就是剪辑或滚动 entire 内容.outerdiv
的名称,包括标题。
答案 0 :(得分:1)
使用flexbox:
.outerdiv {
height: 300px;
display: flex;
flex-direction: column;
...
}
.innerdiv {
flex: 1; /* take available space */
overflow: auto;
...
}
.outerdiv {
border: 1px solid black;
margin: 10px;
height: 300px;
display: flex;
flex-direction: column;
}
.outerdiv h4 {
border-bottom: 1px dotted grey;
margin: 0;
padding: 20px;
}
.innerdiv {
background-color: #9cfff14a;
flex: 1;
overflow: auto;
}
<div class="outerdiv">
<h4>This is my title</h4>
<div class="innerdiv">
<ul>
<li> List item 1 </li>
<li> List item 2 </li>
<li> List item 3 </li>
<li> List item 4 </li>
<li> List item 5 </li>
<li> List item 6 </li>
<li> List item 7 </li>
<li> List item 8 </li>
<li> List item 9 </li>
<li> List item 10 </li>
<li> List item 11 </li>
<li> List item 12 </li>
<li> List item 13 </li>
<li> List item 14 </li>
<li> List item 15 </li>
<li> List item 16 </li>
<li> List item 17 </li>
<li> List item 18 </li>
<li> List item 19 </li>
<li> List item 20 </li>
<li> List item 21 </li>
<li> List item 22 </li>
<li> List item 23 </li>
<li> List item 24 </li>
<li> List item 25 </li>
<li> List item 26 </li>
<li> List item 27 </li>
<li> List item 28 </li>
<li> List item 29 </li>
<li> List item 30 </li>
</ul>
</div>
</div>
答案 1 :(得分:0)
Mb是这样的:
.outerdiv {
border: 1px solid black;
margin: 10px;
height: 300px;
overflow: hidden;
}
.innerdiv {
background-color: #9cfff14a;
height: 100%;
overflow-y: scroll;
}
答案 2 :(得分:0)
ul{
height:70%;
overflow:auto;
}
.outerdiv {
margin: 10px;
}
.innerdiv {
background-color: #9cfff14a;
height:70%;
}
.outerdiv{
height:200px;
}
<div class="outerdiv">
<h4>This is my title</h4>
<div class="innerdiv">
<ul>
<li> List item 1 </li>
<li> List item 2 </li>
<li> List item 3 </li>
<li> List item 4 </li>
<li> List item 5 </li>
<li> List item 6 </li>
<li> List item 7 </li>
<li> List item 8 </li>
<li> List item 9 </li>
<li> List item 10 </li>
<li> List item 11 </li>
<li> List item 12 </li>
<li> List item 13 </li>
<li> List item 14 </li>
<li> List item 15 </li>
</ul>
</div>
</div>
答案 3 :(得分:0)
位置:固定是我想找的东西。
* {
box-sizing: border-box;
}
.outerdiv {
width: 170px;
position: relative;
border: 1px solid #ccc;
}
.outerdiv h4 {
position: fixed; /* header fixed to top */
top:0;
margin: 0;
padding: 8px;
background: #fff; /* so you can't see items behind h4 when scrolling */
}
.innerdiv {
overflow-x: hidden;
overflow-y: auto;
}
.innerdiv ul {
display: block;
max-height: 100px; /* height of ul */
margin: 0;
}
.innerdiv ul li {
width: 100%;
padding: 5px 10px;
}
答案 4 :(得分:0)
请参见示例代码:
.main{
border: 1px solid #000;
margin: 0;
padding: 0;
position: fixed;
width: 50%;
}
.outerdiv {
position: fixed;
background: #999;
width: 50%;
color: #fff;
}
.outerdiv h4{
padding-left: 28px
}
.innerdiv{
margin-top: 70px
}
.innerdiv ul {
margin: 0;
padding: 0;
list-style:none;
overflow-y: scroll;
height: 300px
}
.innerdiv ul li{
margin-left:20px
}
<div class="main">
<div class="outerdiv">
<h4>This is my title</h4>
</div>
<div class="innerdiv">
<ul>
<li> List item 1 </li>
<li> List item 2 </li>
<li> List item 3 </li>
<li> List item 4 </li>
<li> List item 5 </li>
<li> List item 6 </li>
<li> List item 7 </li>
<li> List item 8 </li>
<li> List item 9 </li>
<li> List item 10 </li>
<li> List item 11 </li>
<li> List item 12 </li>
<li> List item 13 </li>
<li> List item 14 </li>
<li> List item 15 </li>
<li> List item 16 </li>
<li> List item 17 </li>
<li> List item 18 </li>
<li> List item 19 </li>
<li> List item 20 </li>
<li> List item 21 </li>
<li> List item 22 </li>
<li> List item 23 </li>
<li> List item 24 </li>
<li> List item 25 </li>
<li> List item 26 </li>
<li> List item 27 </li>
<li> List item 28 </li>
<li> List item 29 </li>
<li> List item 30 </li>
</ul>
</div>
</div>