因此,假设我有以下 标记
<div class="container"> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> <div class="item"></div> </div>
和以下 样式 (SASS)
@mixin max-width($width) { @media screen and (max-width: $width) { @content; } } .container { display: flex; @include max-width(992px) { number: 4; //Hypothetical property that is supposed to control number per row } @include max-width(640px) { number: 2; //Hypothetical property that is supposed to control number per row } } .item { background-color: tomato; padding: 20px; margin-right: 20px; flex: 1; }
是否有真正的Flexbox CSS替代我的假设number属性,可以控制每行显示多少项?
number
浮动式格栅是方便,因为你可以无限适合.items每一个.row因width。但是使用flexbox时,我必须使用许多.row类的变通方法来控制不同宽度的项目的布局和数量。到目前为止,我很幸运,但是某些类型的布局将因这种方法而失败。
.items
.row
width
我必须摆脱块周围的空白,因为很难将百分比宽度清楚地应用于具有空白的元素,但是您可以看到更改:
@mixin max-width($width) { @media screen and (max-width: $width) { @content; } } .container { position: relative; display: flex; flex-flow: row wrap; } .item { background-color: tomato; box-sizing: border-box; padding: 20px; outline: 2px solid blue; flex: 1; } @include max-width(992px) { .item { flex-basis: 25%; background-color: red; } } @include max-width(640px) { .item { flex-basis: 50%; background-color: green; } }
这里的重要部分是:
flex-flow: row wrap它允许flexbox出现在多行中(默认为nowrap)
flex-flow: row wrap
nowrap
flex-basis``width在这种情况下等于
flex-basis``width
position: relative 这使得宽度相对于容器而不是主体(这会弄乱舍入)
position: relative