假设有两个元素垂直放置在一起,如下图所示:
条件是div1
的高度是自动/动态的,因为它取决于其内容。
问题是如何设置div2
的CSS样式以确保div1
和div2
的高度总和是固定的,例如:
<div1>
的高度为<div2>
时, 1000px
和div1
的总高度为div1
,而200px
的高度为自动,div2
的高度将自动调整为1000-200=800px
;当div1
的高度为400px
时,div2
的高度将自动调整为1000-400=600px
;
这有什么解决方案吗?我试图使用flex,但无法弄清楚如何。
答案 0 :(得分:0)
您可以flex: 1
使用.div2
。这与将flex-grow
和flex-shrink
设置为1并将flex-basis
设置为自动相同。现在,.div1
的高度可以是任何值,.div2
将增长或缩小以填充剩余高度。
.parent-container {
display: flex;
flex-direction: column;
height: 300px;
background: black;
}
.div1 {
height: 200px;
background: pink;
}
.div2 {
flex: 1;
background: lightblue;
}
&#13;
<div class="parent-container">
<div class="div1"></div>
<div class="div2"></div>
</div>
&#13;
答案 1 :(得分:0)
如果您对jquery持开放态度,那很简单,
var totalHeight = 500;
$(document).ready(function (){
$('.two').height(totalHeight-$('.one').height());
});
//only if you want to update the content after page load.
$(document).bind('DOMSubtreeModified',function (){
$('.two').height(totalHeight-$('.one').height());
})
div{
width: 300px;
background: red;
}
.two{
background: green;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="one">one</div>
<div class="two">two</div>
我在这里设置总高度为500px。
$(document).ready(function (){
$('.two').height(totalHeight-$('.one').height());
});
这将设置页面加载时第二个div的高度。和
$(document).bind('DOMSubtreeModified',function (){
$('.two').height(totalHeight-$('.one').height());
})
仅当您希望在页面加载后更改内容时才需要此选项。其他明智的你可以忽略这一点。