[英]How to make inner div with overflow:scroll stay inside outer div?
我在另一个div的div内有一个表,如下所示:
<div id="outer">
<div class="inner">
<h4>Search results</h4>
<table>
<tr><th>Internal user</th><th>External domain</th><th># in</th><th>Last in</th><th># out</th><th>Last out</th><th>Is member</th></tr>
<tr><td>Person Name</td><td>company.com</td><td>10</td><td>20/07/2014 13:00</td><td>11</td><td>21/07/2014 11:00</td><td>No</td></tr>
<!-- Lots more data rows -->
</table>
</div>
</div>
表格主体是由javascript动态生成的。
外部div的position:fixed
。
内部div具有overflow:scroll
,应始终填充外部div,但切勿超出其边界。
另外:
bottom
设置为auto
,则内部和外部div都应扩展以适合整个表格;否则, 要么 bottom
设置为任何固定值(例如“ 10px”),则内部div应该保留在外部。 类似的规则应适用于双方的div的宽度取决于我是否设置外层div right
要么auto
或固定值。
该计划是,我在外部div上从bottom:auto
开始,而javascript生成了表格主体,因此两个div都进行了扩展以适合表格。
然后,在完成表之后,我将外部div的大小与视口大小进行比较。 如果外部div的自动尺寸适合视口,则将其保留为auto
,否则我将设置固定值以使其适合视口,并且用户可以滚动查看表格的其余部分。
当我在javascript中更改的唯一属性位于外部div上时,是否有任何一组CSS规则可以实现这一目标?
我最接近的是在内部div上同时设置height:100%
和width:100%
。 唯一的问题是,内部div的滚动条在外部div外面几个像素。
我也尝试过:
position:absolute
内部div的position:absolute
和左/上/右/下均为0。 当外部div的大小为auto
时,这两个div的大小都将变为零。 仅使用一个div而不是两个div会更简单,但是使用不同颜色的两个边框可以在为此设计的Web应用程序中提供更好的对比度。
这是一个JSFiddle: http : //jsfiddle.net/jr5R2
需要增加height: 100%
外部和内部div
均为height: 100%
#outer {
display: block;
position: fixed;
left: 1px;
top: 40px;
width: auto;
right: auto;
bottom: auto;
z-index: 1000;
border: 2px solid silver;
height: 100%;
}
#outer .inner {
background-color: white;
border: 1px solid black;
padding: 2px;
overflow-y: scroll;
height: 100%;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.