CSSグリッドレイアウト(理想的には明示的な列グリッド)を使用します。 そして、x軸に沿って余分なスペースを吸収したり、他のアイテムで使用されていない数の列にまたがる柔軟なアイテムを用意したいと思います。CSSグリッドレイアウト - 必要な数の列にまたがる項目を作成します。
完全な解決策は、非占有の列(flexプロパティに似ています)全体にアイテムを張るプロパティですが、CSSグリッドでは不可能です。
私は例を作ってみるよ:
次のレイアウトは、グリッド上に配置されているいくつかの要素を使用しています。 "aside1"領域のアイテムがカットされている場合は、右側の余分なスペースを吸収する柔軟なヘッダーが必要です。
.grid{
display: grid;
grid-template-columns: none 1fr 1fr none;
grid-template-areas: "header header header aside1"
"nav main main aside2"
"nav main main aside3"
;
}
header {
grid-area: header;
}
main {
grid-area: main;
}
nav {
grid-area: nav;
}
.aside1 {
grid-area: aside1;
}
.aside2 {
grid-area: aside2;
}
.aside3 {
grid-area: aside3;
}
しかし、当然のことながら、限り右側に任意の項目があるとして、ヘッダーはレイアウトは次のようになります。それの列に滞在します:
Flexbox-Layoutでは、これを実現するためにflex:1プロパティを使用できます。
グリッドで...私は、未使用の列をすべて吸収するためのボックス項目を持つ方法が必要だと思います。たぶんそれはできません。
私は土台に似た柔軟なXYグリッド、小さな「framwork」を構築することイストやろうとしています何.grid{
display: grid;
grid-template-columns: none 1fr none;
}
header {
grid-column: 1/????;
grid-row: 1/2;
}
main {
grid-column: 2/3;
grid-row: 1/2;
}
nav {
grid-column: 2/3;
grid-row: 1/2;
}
.aside1 {
grid-column: 2/3;
grid-row: 1/2;
}
.aside2 {
grid-column: 2/3;
grid-row: 2/3;
}
.aside3 {
grid-column: 2/3;
grid-row: 3/4;
}
が、ええと...ないというクール(それは学校のプロジェクトです)。
そしてそれは両方でグリッドシステムを構築することは可能ですかと思いまして:x軸に沿った任意の空きスペース/列吸収
グリッドアイテム、 - フレックスグリッドとし、基盤で可能に。複数の行にまたがる
グリッド項目、 - フレックスグリッドでは不可能では、以下を参照してください。Is it possible for flex items to align tightly to the items above them?(最初の答えはかなりよく、それを説明する)
私は、私は自分自身をもう少し明確にしたいと考えています。
私はあなたが持っているときと同様の動作を期待していました行のうちの1つはflex:1の値を持ち、他のアイテムは固定幅です。 flex:1の項目は、固定項目間のすべての空き領域を占有します。 これは、他の項目がないときに行全体にまたがるだけです。 主なアイデアは、側面のアイテムを切り取ってメインセクションが利用可能なスペースを埋める柔軟なグリッドを持つことです。 CSS-Grid-Layoutで構築すること。可能であれば興味があります。 – MioMioMate