だから、私は次のものを持っていると想像してくださいマークアップ
<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>
そして、次のstyles(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;
}
行ごとに表示するアイテムの数を制御できる仮想のnumber
プロパティに代わる実際のFlexbox CSS代替手段はありますか?
width
により、.items
ごとに無制限の.row
を収めることができるため、フロートのようなグリッドが便利でした。しかし、flexboxでは、さまざまな幅で.row
クラスなどの回避策を使用して、レイアウトとアイテムの数を制御する必要があります。私はこれまで幸運でしたが、そのようなアプローチでは失敗する特定のタイプのレイアウトがあります。
パーセンテージ幅はマージンのある要素にきれいに適用するのが難しいため、ブロックの周囲のマージンを取り除く必要がありましたが、 http://codepen.io/anon/pen/jPeLYb? editors = 11 :
@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-basis
は、この場合のwidth
と同等です
position: relative
は、ボディではなくコンテナに相対的な幅を作成します(これにより丸めが台無しになります)