在屏幕宽度为1400px或更高时,我在一行中显示4个flexbox项目 . 在较低的屏幕宽度下,我想在一行中显示2个弹性箱项目,在更小的设备上,每行只显示一个项目 .
默认的flex-wrap行为是它一个接一个地包装(从4到3到2到1) .
有没有一种简单的方法来使用flexbox实现这种包装行为?
这是一个具有默认包装行为的codepen:https://codepen.io/anon/pen/dVOVaG
CSS
.outerDiv {
box-sizing: border-box;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex: 0 1 auto;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
margin-right: 0rem;
margin-left: 0rem;
}
.innerDiv {
margin-top: 1rem;
margin-bottom: 1rem;
}
.imageDiv {
position: relative;
overflow: hidden;
z-index: 1;
}
HTML
<div class="outerDiv">
<div class="innerDiv">
<div class="imageDiv">
<img src="http://stwv-s3.global.ssl.fastly.net/filestore/season/image/harrypotterandthecursedchild_58482_1_1_20160804105944.jpg">
</div>
</div>
<div class="innerDiv">
<div class="imageDiv">
<img src="http://stwv-s3.global.ssl.fastly.net/filestore/season/image/harrypotterandthecursedchild_58482_1_1_20160804105944.jpg">
</div>
</div>
<div class="innerDiv">
<div class="imageDiv">
<img src="http://stwv-s3.global.ssl.fastly.net/filestore/season/image/fcbarcelona_431_1_1_20160908181513.jpg">
</div>
</div>
<div class="innerDiv">
<div class="imageDiv">
<img src="http://stwv-s3.global.ssl.fastly.net/filestore/season/image/bethhart_1880_1_3_20161201140946.jpg">
</div>
</div>
</div>
1 回答
不,Flexbox没有告诉他们一次将项目包装2的属性 .
在这种情况下最简单的是在标记中将它们2 2包裹起来,这里完成删除两个
innerDiv
,然后使剩余的innerDiv
也是flex容器(嵌套的Flexbox容器/项目) .要保留现有标记,请使用媒体查询并在断点处将
innerDiv
设置为min-width: 50%
<1400px(max-width: 1399px
)