私のsass(コンパスを使用してプレフィックスを取得する)は このフィドルに表示 です。
.container
@include display-flex
@include flex-wrap(wrap)
.item
@include flex-grow(1)
@include flex-basis(190px)
ただし、下部の2つのアイテムが上部のアイテムと同じになるようにしたいと思います。
私はそれらを左に浮かせたり、幅を固定したりしたくありません。これは他の解像度での私の配置では機能しません。
どんな提案も歓迎します!
イゴールの回答に返信して、彼のソリューションの改善を提案することはできませんが、彼のフィドルはレスポンシブレイアウトに対して完全には機能しませんでした。
flex-grow: 0;
を使用した最初のソリューションは、コンテナを埋めるためにアイテムを引き伸ばしません。非表示のアイテムを使用する2番目のソリューションは機能しますが、コンテナーの高さを拡張します。しかし、上/下の余白を削除することでうまくいきました。
私はjsfiddleを編集して、応答性を高め、コンテナー拡張の不可視項目を修正し、変更内容を説明するコメントを使用しました。ただし、コンテナがアイテムの行よりも大きい場合は機能しません:( fiddle )
私自身も簡単な解決策を作りました。私は自分でこれをやろうとしていましたが、イゴールのソリューションは非常に役立ちました。 ( フィドル )
.container {
display: flex;
flex-flow: row wrap;
/*style*/
padding: 0.5em;
background-color: royalblue;
}
.item {
flex: 1 0 80px;
/*style*/
margin: 0.5em;
padding: 1em;
text-align: center;
background-color: lightblue;
}
.filler {
flex: 1 0 80px;
height: 0px;
/*style*/
margin: 0 0.5em;
padding: 0 1em;
}
<div class="container">
<div class="item">sm</div>
<div class="item">medium</div>
<div class="item">large item</div>
<div class="item">medium</div>
<div class="item">medium</div>
<div class="item">large item</div>
<div class="item">sm</div>
<div class="item">sm</div>
<div class="item">medium</div>
<div class="item">large item</div>
<div class="item">medium</div>
<div class="item">medium</div>
<div class="item">large item</div>
<div class="item">sm</div>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
<div class="filler"></div>
</div>
flex-basis: 50%;
およびflex-grow: 1
。
.parent {
display: flex;
width: 300px;
height: 300px;
}
.child {
flex-basis: 50%;
flex-grow: 1;
background: tomato;
border: 1px solid #ccc;
}
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div>
フレックスベースは最小幅と最大幅によって制限されるため、この場合、最大幅をフレックスベースに等しく設定すると、目的の結果が得られます。
これにより、配置プロパティも保持されます。つまり、行に5つのアイテムがあり、残りの2つのアイテムがある場合、残りのアイテムは引き続きページの中央に正しいサイズで表示されます。
.container
@include display-flex
@include flex-wrap(wrap)
.item
@include flex-grow(1)
@include flex-basis(190px)
@include max-width(190px)
.container {
overflow: hidden;
}
.child-item {
float: left;
}