4 回答
TA贡献1772条经验 获得超5个赞
您需要添加flex-direction: column到main. 并使用flex-grow: 1main-content 来覆盖剩余空间(如果你想要的话)
默认属性值为row。所以主栏和侧边栏并排并且高度相等,等于其容器的高度(默认的弹性行为)
.main {
min-height: 100vh;
background-color: red;
display: flex;
flex-wrap: wrap;
flex-direction:column;
}
.sidebar {
background-color: blue;
height: 100px;
width: 100%;
}
.main-content {
background-color: yellow;
flex-grow:1;
width: 100%;
}
@media (min-width:768px) {
.main-content{
width: 80%;}
.sidebar {
width: 20%
}
.main {
flex-direction:row;
}
}
<div>Header</div>
<div class="main">
<div class="sidebar">
sidebar
</div>
<div class="main-content">
main-content
</div>
</div>
TA贡献1824条经验 获得超5个赞
尝试这个
@media (min-width: 768px) {
.main-content,
.sidebar {
width: 100%
height: 100%
}
}
TA贡献1820条经验 获得超10个赞
对于height具有百分比值的设置(如.sidebar和.main-content),这些 ( ) 的父元素.main需要定义一个height设置,作为其百分比值的参考。min-height在这种情况下还不够。
因此,在 中.main,您可以更改min-height: 100vh为height: 100vh并添加overflow-y: visible以使其变得更大。
.main {
height: 100vh;
overflow-y:visible;
background-color: red;
display: flex;
flex-wrap: wrap;
}
.sidebar {
background-color: blue;
height: 100px;
width: 100%;
}
.main-content {
background-color: yellow;
height: 100%;
width: 100%;
}
@media (min-width: 768px) {
.main-content{
width: 80%;}
.sidebar {
width: 20%
}
}
<div>Header</div>
<div class="main">
<div class="sidebar">
sidebar
</div>
<div class="main-content">
main-content
</div>
</div>
- 4 回答
- 0 关注
- 186 浏览
添加回答
举报