【发布时间】:2021-02-08 09:01:09
【问题描述】:
我遇到了一些 div 的问题
外部 div 有一个最小高度,但内部 div 都是不同的高度。因为内部 div 是绝对定位的,所以它们不会影响外部 div 的高度。有没有办法让这些内部 div 影响外部 div 的高度?
我将这些 div 设置为 position:absolute 的原因是它们都从容器 div 的顶部开始。
【问题讨论】:
标签: css
我遇到了一些 div 的问题
外部 div 有一个最小高度,但内部 div 都是不同的高度。因为内部 div 是绝对定位的,所以它们不会影响外部 div 的高度。有没有办法让这些内部 div 影响外部 div 的高度?
我将这些 div 设置为 position:absolute 的原因是它们都从容器 div 的顶部开始。
【问题讨论】:
标签: css
据我所知,绝对定位的子元素无法静态影响它们的高度,或者仅使用 CSS 相对定位的父元素。要么:
这个问题在淡入/淡出 JavaScript 幻灯片中很常见,据我所见,1) 需要定义父容器的高度或 2) 为每个动态设置父容器的高度幻灯片。
【讨论】:
我最近遇到了淡入/淡出 CSS 过渡幻灯片的问题,最终通过给第一个子元素 position: relative; 和其他 position: absolute; top:0; left: 0; 来解决它,这确保容器高度与高度相同的第一个元素。由于我的 CSS 过渡幻灯片使用 opacity 属性,因此容器尺寸在幻灯片播放过程中永远不会改变。
唉,因为我还需要为旧浏览器提供 javascript 后备,所以无论如何我都必须为这些浏览器设置容器高度(因为 jQuerys fadeIn/fadeOut 实际上设置了 display: none; 我猜)。
【讨论】:
这是一个早该解决您问题的跨浏览器解决方案。不再有静态width,不再有em hack。
<style>
/* clearfix */
.container:after {
content: '';
display: table;
clear: left;
}
.page {
float: left; /* display side-by-side */
width: 100%; /* be as wide as parent */
margin-right: -100%; /* take up no width */
}
</style>
<div class="container">
<div class="page"></div>
<div class="page"></div>
</div>
在寻找这个问题的解决方案这么久之后,我很困惑地看到它是多么简单。当然,.page 元素不是绝对定位的。但是,通过这种方法可以实现所有相同的目标,几乎没有痛苦或牺牲。
这是一个演示:https://jsfiddle.net/eqe2muhv/
当然,这也适用于内联块。尽管您可能需要将容器的font-size 或letter-spacing 设置为0。我还建议在.page 上使用vertical-align: top 来模拟常规块元素。
【讨论】:
尝试使用display: inline-table, height: auto; .. 它对我有用
【讨论】:
我认为您应该将它们相对定位,只需将内部 div 中的“vertical-align”更改为“top”即可。这样你就不会遇到弄乱 abs div 的问题了。
【讨论】:
如果您希望 div 位于同一水平面上,您可以简单地浮动它们。
【讨论】:
我在没有任何JS 的情况下完成了这项任务。仅通过 CSS:
.frame {
max-height: calc(100vh - 283px); // 283px gives me some space at the botoom of the frame
}
【讨论】:
也许你可以试试max-height: calc(100% - 50%);,如果应该在屏幕/div中间的内容超短/小,它会起作用。
position:absolute;
top:0;
bottom:0;
margin:auto;
width:auto;
height:auto
max-height: calc(100% - 50%);
...etc...
【讨论】:
在需要自动高度的元素上测试display: inline-block。
【讨论】: