我想要.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>
答案 0 :(得分:0)
Flex项目也可以是flex容器。这使您可以将多个容器(flex-direction: row
或column
)嵌套在更大的容器中。
对于您的布局,您可以构建一个由两个弹性项组成的列。第一项(.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; }
&#13;
<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>
&#13;