这很难解释,所以请耐心等待(或者直接跳到jsfiddle)
我有一个定义了 max-height 和 overlow-x 设置为滚动的 Div。在这个 Div 中有一堆列表项(在本例中为地址)。当然,其中可能有很多,它们可能会溢出,这很好用。我想要的是一个'cover' div,它表明这个面板被禁用了。我通过在主 div 中放置一个绝对定位的 div 来做到这一点,就像这样。
<div style="max-height:150px;overflow:auto;position:relative">
<ul>
<li>Church Walk, Access To Foxholes Farm, DT2 9HG
</li>
<li>Garden Cottage, Access To Foxholes Farm, DT2 9HG
</li>
<li>Little Bride, Access To Foxholes Farm, DT2 9HG
</li>
...etc
</ul>
<div id="overlayDiv" style="display:none;background-color:white;position:absolute;top:0px;opacity:0.8;height:100%;width:100% ">
<p style="margin-top:50px;text-align:center;font-size:18px;">Searching...</p>
</div>
</div>
然后,当用户执行某些操作,覆盖内容并使其显示为禁用时,就会出现这种情况。伟大的!当我的列表项溢出时会出现问题。当覆盖 div 出现时,它仅覆盖父 div 的当前可见部分,这意味着如果我向下滚动 div,它会显示为“未覆盖”,因为覆盖 div 仅跨越父级的高度,不包括其溢出。
这真的很难解释,所以请转到我的jsfiddle并单击其中一个地址。你会看到 div 被覆盖了。如果然后向下滚动该 div,您将看到列表底部的项目未被发现。
这也适用于反向,因此如果您单击“隐藏覆盖 div”按钮以摆脱封面,然后单击列表底部的地址之一,您会看到“封面”仍然只覆盖div 的顶部。
关于如何使封面 div 扩展其父级的整个高度的任何想法,包括溢出?欢迎和鼓励其他替代解决方案。请记住,我不一定需要覆盖在顶部的“搜索”文本,只需“封面”就足够了。