grid-columnプロパティ

grid-columnプロパティは、グリッド内の要素の列方向の開始位置と終了位置を設定します。プロパティの値は、スラッシュで区切られた正または負の数値で指定できます。最初の数値は要素の開始位置、2番目の数値は終了位置を示します。

値として正の数値を指定した場合、要素の位置は左から右へとカウントされます。負の数値を指定すると、要素は逆順、つまり右から左に配置されます。

構文

cssセレクタ {
  grid-column: 開始位置 / 終了位置;
}

例

グリッド内の要素に開始位置と終了位置を設定してみましょう:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
</div>
css#parent {
  display: grid;
  padding: 10px;
  border: 2px solid #696989;
}
#parent > div {
  padding: 10px;
  border: 1px solid #696989;
}
#elem1 {
  grid-column: 1 / 2;
}
#elem2 {
  grid-column: 1 / 3;
}
#elem3 {
  grid-column: 1 / 4;
}

Результат:

例

次に、grid-columnプロパティに負の数値を指定してみます:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
</div>
css#parent {
  display: grid;
  padding: 10px;
  border: 2px solid #696989;
}
#parent > div {
  padding: 10px;
  border: 1px solid #696989;
}
#elem1 {
  grid-column: 1 / -2;
}
#elem2 {
  grid-column: 1 / -3;
}
#elem3 {
  grid-column: 1 / -4;
}

Результат:

例

次に、1番目、2番目、3番目の要素を1行目に配置し、4番目の要素が2行目全体を占めるようにしてみましょう:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
</div>
css#parent {
  display: grid;
  padding: 10px;
  border: 2px solid #696989;
}
#parent > div {
  padding: 10px;
  border: 1px solid #696989;
}
#elem1 {
  grid-column: 1 / 2;
}
#elem2 {
  grid-column: 2 / 3;
}
#elem3 {
  grid-column: 3 / 4;
}
#elem4 {
  grid-column: 1 / 4;
}

Результат:

例

隣接する要素が占める列が重なった場合、後続の各要素は1行下にシフトします。この特性を利用して、1番目の要素を1行目、2番目の要素を2行目、3番目と4番目の要素を3行目に配置してみましょう:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
</div>
css#parent {
  display: grid;
  padding: 10px;
  border: 2px solid #696989;
}
#parent > div {
  padding: 10px;
  border: 1px solid #696989;
}
#elem1 {
  grid-column: 1 / 4;
}
#elem2 {
  grid-column: 2 / 3;
}
#elem3 {
  grid-column: 1 / 2;
}
#elem4 {
  grid-column: 3 / 4;
}

Результат:

例

grid-columnプロパティとgrid-rowプロパティを組み合わせてみましょう:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
</div>
css#parent {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  border: 2px solid #696989;
  padding: 10px;
  height: 300px;
  width: 400px;
}
#parent > div {
  padding: 10px;
  border: 1px solid #696989;
}
#elem1 {
  grid-row: 1 / 3;
}
#elem2 {
  grid-row: 1 / 2;
}
#elem3 {
  grid-row: 1 / 2;
}
#elem4 {
  grid-row: 2 / 3;
  grid-column: 2 / 4;
}

Результат:

例

次に、1番目と5番目のブロックが行全体を占め、2番目のブロックが2行2列、3番目と4番目のブロックが1行2列を占めるようにしてみましょう:

html<div id="parent">
  <div id="elem1">1</div>
  <div id="elem2">2</div>
  <div id="elem3">3</div>
  <div id="elem4">4</div>
  <div id="elem5">5</div>
</div>
css#parent {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  border: 2px solid #696989;
  padding: 10px;
  height: 300px;
  width: 400px;
}
#parent > div {
  padding: 10px;
  border: 1px solid #696989;
}
#elem1 {
  grid-row: 1 / 2;
  grid-column: 1 / 4;
}
#elem2 {
  grid-row: 2 / 4;
  grid-column: 1 / 2;
}
#elem3 {
  grid-row: 2 / 3;
  grid-column: 2 / 4;
}
#elem4 {
  grid-row: 3 / 3;
  grid-column: 2 / 4;
}
#elem5 {
  grid-row: 4 / 5;
  grid-column: 1 / 4;
}

Результат:

関連項目

  • グリッド内の要素の行方向の開始位置と終了位置を設定するgrid-rowプロパティ
  • グリッド内の要素の列方向の開始位置を設定するgrid-column-startプロパティ
  • グリッド内の要素の列方向の終了位置を設定するgrid-column-endプロパティ
  • グリッドの列数と幅を設定するgrid-template-columnsプロパティ
  • 暗黙的なグリッドの列数と幅を設定するgrid-auto-columnsプロパティ