display: inline-block
と積み重なるブロックの完全なページがあります。 4〜2倍大きくしたいので、float: left
またはright
を使用して他のブロックを配置しました。
私の問題は、5要素の行がある場合、どのように中央に大きな要素を置くことができるかですそれのうち? (float
のように、自然に横に置いてください)。
以下はスニペットの例です。
#wrapper{
width: 516px;
}
.block{
display: inline-block;
width: 90px;
height: 50px;
margin: 5px;
background-color: red;
}
.bigger{
height: 110px;
}
<div id="wrapper">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block bigger"></div>
<div class="block"></div>
<div class="block"></div>
</div>
子要素の高さが固定されています(.block
)。その情報に基づいて、コンテナーの高さ(#wrapper
)を推定できます。
コンテナの高さを知ることにより、レイアウトは CSS Flexbox をflex-direction: column
およびflex-wrap: wrap
とともに使用して実現できます。
コンテナの固定された高さはブレークポイントとして機能し、折り返す場所をflexアイテムに指示します。
#wrapper {
display: flex;
flex-direction: column;
flex-wrap: wrap;
height: 120px;
width: 516px;
}
.block {
width: 90px;
flex: 0 0 50px;
margin: 5px;
background-color: red;
}
.bigger {
flex-basis: 110px;
}
<div id="wrapper">
<div class="block"></div>
<div class="block"></div>
<div class="block bigger"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
コンテナに固定の高さ/幅がない場合、フレックスアイテムがラップできない理由は次のとおりです: https://stackoverflow.com/a/43897663/3597276
レイアウトをフレックスボックスで機能させるには、ネストされたコンテナを使用するまたはコンテナの高さを知る( このページの他の回答を参照してください )。グリッドではそうではありません。コード構造は非常に単純です。
#wrapper {
display: grid; /* 1 */
grid-template-columns: repeat(5, 90px); /* 2 */
grid-auto-rows: 50px; /* 3 */
grid-gap: 10px; /* 4 */
width: 516px;
}
.bigger {
grid-row: 1 / 3; /* 5 */
grid-column: 2 / 3; /* 6 */
}
.block {
background-color: red;
}
<div id="wrapper">
<div class="block"></div>
<div class="block bigger"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
</div>
ノート:
grip-gap
はgrid-row-gap
およびgrid-column-gap
の省略形です。( spec reference )CSSグリッドのブラウザーサポート
これが全体像です: http://caniuse.com/#search=grid