div 上的滚动条只有在它有超过 30 个项目时才会出现

Posted

技术标签:

【中文标题】div 上的滚动条只有在它有超过 30 个项目时才会出现【英文标题】:Scrollbar on a div should appear only if it has more than 30 items 【发布时间】:2014-08-09 20:02:43 【问题描述】:

我有一个容器 div,其中包含其他 div(列表项)。 此容器 div 的大小应等于 30 个项目的高度。 如果容器 div 中有超过 30 个项目,它应该保持相同的大小,但显示垂直滚动条。

问题:

有没有办法通过 CSS 设置这个容器 div 的样式,这样只有在添加超过 30 个列表项后,才会出现滚动? 或者我必须在 CSS 中“硬编码”容器 div 的高度,即 list_item*30。或其他可能性:使用 javascript 动态更改高度 初始化时的容器取决于列表项的高度。这些是唯一正确的吗 如何做到这一点?

谢谢。

【问题讨论】:

我假设容器内的 div 具有动态高度?还是它们都一样高?如果它们是动态的,则必须使用 javascript,例如检查存在多少列表项并设置溢出自动或滚动(如果超过 30 个)。如果每个元素的高度相同,则可以只给容器 div 项的高度*30 并通过 css 设置溢出属性 实际上它们是相同的......我只是好奇是否有其他方法不将父高度设置为 list_item*30。因为在那之后如果有人改变 list_item 的高度,他也必须改变父容器的高度。谢谢你,gulty。 【参考方案1】:

如果列表中的每个项目都具有相同的高度,“硬编码”可能是更简单的方法。只需将 item_height*30 的高度设置为 div 并拥有overflow:auto

【讨论】:

【参考方案2】:

在父 div 中提及 CSS 高度并在溢出-y 上滚动。

这里我为父 div 取两个 div 的高度。

此处示例

enter code here

http://jsfiddle.net/2C7qH/

【讨论】:

是的,我就是这么想的。如果项目的高度已知 - CSS(你的 jsfiddle)。如果不是 - 应该使用 JavaScript。似乎这些是唯一的方法,这次没有 CSS 魔法。谢谢。 我更新了 JSFiddle。只是通过它。这里我还提到了 2 个内部 div。如果你想 30 div 高度乘以 30 而不是 2。 这个小提琴链接给你正是你在等待jsfiddle.net/fNdj6/5 感谢所有 jsfiddles,Srinu! 这里输入代码是没有代码的。您必须将代码添加到您的帖子中。 *** 需要它

以上是关于div 上的滚动条只有在它有超过 30 个项目时才会出现的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 React 项目的 CSS 中添加水平滚动条时 div 的大小会减小?

防止弹性项目超过父高度并使滚动条工作

让两个 div 共享同一个滚动条?

div 加滚动条 超过div宽度 自动换行 div居中

asp.net中复选框列表中的滚动条

如何让DIV固定在页面而不随着滚动条随意滚动