我想在a.container
的左侧有一个简介部分,在右侧有一个侧栏。
在.intro
部分下面的左侧,我希望有四个div像网格一样等距分布。
我在设置“网格”时遇到了问题。我认为问题的一部分是父对象有一些影响子对象的flexbox属性。
要求:简介部分应在.left-side
中居中,而“网格”不应居中。方框应占用足够的空间,以便在两个空格之间的行中容纳2个。.intro
应该是左侧宽度的80%。
我不想对结构做任何重大更改这只是我的项目设置的一个小示例。
.container{
width: 80%;
margin: 0 auto;
display: flex;
}
.left-side{
flex:8;
display: flex;
justify-content:center;
flex-wrap: wrap;
}
.side-bar{
flex: 2;
height: 100vh;
background: powderblue;
}
.intro{
flex:3;
width:80%;
height: 300px;
background: skyblue;
}
.box{
background: red;
width: 45%;
height: 100px;
flex:4;
border:1px solid orange;
}
<div class="container">
<div class="left-side">
<div class="intro">
intro
</div>
<div class="recent">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
</div>
<div class="side-bar">
sidebar
</div>
最佳答案
Flex项也可以是Flex容器。这使您能够在更大的容器中使用flex-direction: row
或column
嵌套多个容器。
对于布局,可以构建一个由两个flex项组成的列。第一项(.intro
)的宽度为80%,可以水平居中。第二个项(.recent
)可以是一个flex容器,其中四个项排列在2x2网格中。
.container {
width: 80%;
margin: 0 auto;
display: flex;
justify-content: center;
height: 100vh;
}
.left-side {
flex: 4;
display: flex;
flex-direction: column;
}
.side-bar {
flex: 1;
background: powderblue;
}
.intro {
flex: 3;
height: 300px;
width: 80%;
margin: 0 auto;
background: skyblue;
}
.recent {
display: flex;
flex-wrap: wrap;
background-image: url("http://i.imgur.com/60PVLis.png");
background-size: contain;
}
.box {
margin: 5px;
flex-basis: calc(50% - 10px);
height: 100px;
box-sizing: border-box;
background: red;
}
body { margin: 0; }
<div class="container">
<div class="left-side">
<div class="intro">intro</div>
<div class="recent">
<div class="box">1</div>
<div class="box">2</div>
<div class="box">3</div>
<div class="box">4</div>
</div>
</div>
<div class="side-bar">
sidebar
</div>
</div>