Bur*_*ler 2 html css css3 flexbox css-grid
是否可以使用html + css实现此结构?
但是,我不想在橙色块之间留有垂直空间,我想成为另一个块的顶部。
我使用过flex和grid但到目前为止还没有真正成功:(
.container {
padding: 10px;
border: 1px solid red;
display: flex;
flex-flow: row wrap;
justify-content: space-between;
}
.big {
width: calc(60% - 22px);
padding: 10px;
background: lime;
height: 100px;
margin-bottom: 10px;
}
.small {
width: calc(40% - 22px);
height: 100px;
padding: 10px;
background: orange;
margin-bottom: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="big"> I AM BIG 1</div>
<div class="small"> I AM SMALL 1</div>
<div class="big"> I AM BIG 2</div>
<div class="big"> I AM BIG 3</div>
<div class="big"> I AM BIG 4</div>
<div class="small"> I AM SMALL 2 </div>
</div>
Run Code Online (Sandbox Code Playgroud)
您可以使用CSS网格布局轻松做到这一点:
您可以使用,grid-template-columns: 3fr 2fr;
因为big
和small
元素的比例为60%到40%,
行高可以使用设置grid-auto-rows: 100px
,
行之间的边距可以使用grid-row-gap
属性设置,
现在将设置为big
使用总是占据第一列grid-column: 1
,small
而总是占据第二列。
请参阅下面的演示以获取到目前为止的配置:
.container {
padding: 10px;
border: 1px solid red;
display: grid;
grid-template-columns: 3fr 2fr;
grid-auto-rows: 100px;
grid-row-gap: 10px;
}
.big {
padding: 10px;
background: lime;
grid-column: 1;
}
.small {
padding: 10px;
background: orange;
grid-column: 2;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="big"> I AM BIG 1</div>
<div class="small"> I AM SMALL 1</div>
<div class="big"> I AM BIG 2</div>
<div class="big"> I AM BIG 3</div>
<div class="big"> I AM BIG 4</div>
<div class="small"> I AM SMALL 2 </div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在,只需添加grid-auto-flow: dense
即可将橙色方块拉到顶部-参见下面的演示:
.container {
padding: 10px;
border: 1px solid red;
display: grid;
grid-template-columns: 3fr 2fr; /* two columns */
grid-auto-rows: 100px; /* row height */
grid-row-gap: 10px; /* gap between rows */
grid-auto-flow: dense; /* added */
}
.big {
padding: 10px;
background: lime;
grid-column: 1; /* in first column */
}
.small {
padding: 10px;
background: orange;
grid-column: 2; /* in second column */
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="big"> I AM BIG 1</div>
<div class="small"> I AM SMALL 1</div>
<div class="big"> I AM BIG 2</div>
<div class="big"> I AM BIG 3</div>
<div class="big"> I AM BIG 4</div>
<div class="small"> I AM SMALL 2 </div>
</div>
Run Code Online (Sandbox Code Playgroud)