如何使具有position:absolute
和动态高度的元素仅使用CSS占据垂直空间?有没有我可以使用的容器和显示技巧?
不幸的是,根据定义,使用绝对定位意味着您的元素不再占用空间。因此,不行,只有通过CSS才能做到这一点。
您当然可以使用jQuery(或普通的javascript)来完成此操作。我该怎么做,每个垂直元素旁边都有一个space
元素。将空间元素和绝对放置的垂直元素都围在相对放置的div中。在页面加载时,更改空格元素的height以匹配垂直元素的高度。
position: absolute
表示它们不占用流中的空间。但是,您不必使用边距进行动画处理,可以使用float
来让元素占用任何空间,并使每个元素成为position:relative
。
div.animate-me {
width: 300px;
margin: 20px;
float: left;
left: -1000px; // Make them start offscreen
position: relative;
border: 1px solid red;
visibility: hidden
}
$('div').css().animate({
left: 0
});
[并非在所有情况下都适用,但是:如果position: absolute
元素具有固定的宽高比(例如,以height: auto
进行响应的图像或视频大小调整),则可以利用padding-bottom
trick来具有相同长宽比的spacer元素,以便与padding-bottom
元素一起调整大小:
absolute
您可以阅读链接,但是可以使用,因为带有百分比的.spacer {
height: 0;
padding-bottom: 125%; /* for a 1.25 height/width ratio */
}
被解释为元素宽度的百分比。
然后取决于您的特定布局来定位间隔物,使其精确地覆盖或覆盖padding-bottom
元素,并占据position: absolute
元素在没有absolute
的情况下所占据的空间。