グリッドレイアウト上級編

このページでは、もう少し難易度の高いグリッドレイアウトの使い方を説明します。

並ぶ方向を変える

下の記述例は、「左/中/右」が「100/200/300」ピクセルの3段組みをグリッドレイアウトで作っています。 これまでグリッドレイアウトの例として、似たような例はいくつか紹介してきました。

        <div style="display: grid; grid-template-columns: 100px 200px 300px; gap: 10px;"><div style="background-color: #FAF;">1</div><div style="background-color: #FAF;">2</div><div style="background-color: #FAF;">3</div><div style="background-color: #FAF;">4</div><div style="background-color: #FAF;">5</div><div style="background-color: #FAF;">6</div></div>
    

この例を少し変更します。変更点は色を付けています。

        <div style="display: grid; grid-auto-flow: column; grid-template-rows: 20px 40px 60px; gap: 10px;"><div style="background-color: #FAF;">1</div><div style="background-color: #FAF;">2</div><div style="background-color: #FAF;">3</div><div style="background-color: #FAF;">4</div><div style="background-color: #FAF;">5</div><div style="background-color: #FAF;">6</div></div>
    

2つの違いをまとめると次のようになります。

異なる点 変更前 変更後
styleの違い1

"grid-auto-flow: column;"がない。

"grid-auto-flow: column;"がある。

styleの違い2

"grid-template-columns: 100px 200px 300px;"

"grid-template-rows: 20px 40px 60px;"

表示の違い

1行目に左から1→2→3となり、2行目に4→5→6となっている。

1段目(左段)に上から1→2→3となり、2段目(右段)に4→5→6となっている

"grid-auto-flow: column;"をつけることで、並び方が変化します。今まで横方向に並んでいたものが縦方向になります。

ただし、それだけではレイアウトするための情報が不足しています。行数(縦方向の数)が設定する必要があります。

そのための指定が、"grid-template-rows: 20px 40px 60px;"です。 この設定で「行の数が3個。それぞれの高さが20/40/60ピクセル。」という情報が設定されることで、上の例のような並び方になります。

紹介はしたものの、英雄クロニクルの自由記入欄は横幅が640ピクセルと決まっています。

"grid-auto-flow: column;"を使うと横方向に伸びていくレイアウトになってしまうので、自由記入欄との相性がよくありません。あまり使わないほうが良いでしょう。

段と行を設定する

grid-template-columnsは段組みの数と各段の横幅を設定していましたが、それと同様にgrid-template-rowsは行の数と各行の高さを設定することができます。

そして、grid-template-columnsとgrid-template-rowは同時に指定することもできます。

        <div style="display: grid; gap: 10px; grid-template-columns: 100px 200px 300px; grid-template-rows: 40px 60px;">
        (内側のブロックは同じなので省略)
        </div>
    

とすれば、3×2の表(横が3段で横幅100/200/300ピクセル×縦が2行で高さ40/60ピクセル)を設定したことになります。

上の例は、次のように表示されます。

横(段)の設定はこのページの最初の例と同じです。見比べれば、高さ(行)の設定が加わっていることがわかりやすいと思います。

内部ブロックの数が多いとき

内部ブロックの数が、grid-template-columnsとgrid-template-rowの設定より多いとき、はみ出すことになりますが、非表示にはなりません。

高さがautoの行が増えた扱いで、レイアウトされて、表示されます。

下に例を表示します。(入力例は省略)

7個目が3行目に配置されます。

"grid-auto-flow: column;"が指定されている時は並び方違うので、横幅がautoの段が増えた扱いでレイアウトされます。

7個目が4段目に配置されますが、横幅が限られているので、ものすごく小さくなっています。

結合

表計算ソフト(Excelなど)を使った事がある方は、「セルを結合する」という機能を使った経験があるかも?

グリッドレイアウトでも同様の結合ができます。

入力例は省略しますが、次のような2段の段組みをグリッドレイアウトで作っていたとします。

■使い方1
 MP吸収で、燃料を断て!
 黒魔法アタッカーならそれで戦力外に出来ますし、見切り/先制/反射/不倒/損害制限などを発動させないようにすることで、他のアタッカーさんをサポートします。
■使い方2
 トークンを召還し、攻撃だ!
 パープルで直接剣秘技を使うより、トークンで剣秘技を使った方が強いです。
 トークンは無属性です。増加で威力を増やせば、全加護防衛キャラさんに有効打を与えることもできます。
 またトークンが倒されても被害は0です。不死アタッカーのように敵陣に突っ込ませるのも、お奨め戦術です。
■使い方3
 壁を作って耐えろ!
 トークンで奥配置の敵を吊り出したり、逆に、敵の移動を防ぐ壁として配置したり。
■使い方4
 今だ。秘技を使え!
 威力は低いですが剣秘技を使えます。見切りさんが相手ならワンチャンスあるかも?
■使い方5
 物理と魔法が合わさって…。
 剣通常攻撃(物理)+追加ダメージ(魔法)の変則キャラです。
 例えば「反射物理キャラ」「報復キャラ」を相手にするときには、「剣通常攻撃で弱めのダメージを与え、追加ダメージで止めをさす。」といった攻撃手段が有効な場合もあります。
■使い方6
 団結だ。友情パワー!
 攻撃はトークンにまかせて、自分は団結による支援を他の人に与えます。位置取りしやすい事は利点です。

ほんの少し設定を加えるだけで、次のようなちょっと複雑なレイアウトにすることができます。

■使い方1
 MP吸収で、燃料を断て!
 黒魔法アタッカーならそれで戦力外に出来ますし、見切り/先制/反射/不倒/損害制限などを発動させないようにすることで、他のアタッカーさんをサポートします。
■使い方2
 トークンを召還し、攻撃だ!
 パープルで直接剣秘技を使うより、トークンで剣秘技を使った方が強いです。
 トークンは無属性です。増加で威力を増やせば、全加護防衛キャラさんに有効打を与えることもできます。
 またトークンが倒されても被害は0です。不死アタッカーのように敵陣に突っ込ませるのも、お奨め戦術です。
■使い方3
 壁を作って耐えろ!
 トークンで奥配置の敵を吊り出したり、逆に、敵の移動を防ぐ壁として配置したり。
■使い方4
 今だ。秘技を使え!
 威力は低いですが剣秘技を使えます。見切りさんが相手ならワンチャンスあるかも?
■使い方5
 物理と魔法が合わさって…。
 剣通常攻撃(物理)+追加ダメージ(魔法)の変則キャラです。
 例えば「反射物理キャラ」「報復キャラ」を相手にするときには、「剣通常攻撃で弱めのダメージを与え、追加ダメージで止めをさす。」といった攻撃手段が有効な場合もあります。
■使い方6
 団結だ。友情パワー!
 攻撃はトークンにまかせて、自分は団結による支援を他の人に与えます。位置取りしやすい事は利点です。

縦に結合

上の例では、入力する量(文章部分)が多くて肝心の部分がわかりにくくなるので、もう少し簡単な例で説明します。

最初の例は2×3の形になっていたので、文章を簡略化すると下と同じです。

        <div style="display: grid; grid-template-columns: auto auto; gap: 10px;"><div style="background-color: #FAF;">■使い方1</div><div style="background-color: #FAF;">■使い方2</div><div style="background-color: #FAF;">■使い方3</div><div style="background-color: #FAF;">■使い方4</div><div style="background-color: #FAF;">■使い方5</div><div style="background-color: #FAF;">■使い方6</div></div>
    
■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

まず、「■使い方2」を1つ下と結合します。

        <div style="display: grid; grid-template-columns: auto auto; gap: 10px;"><div style="background-color: #FAF;">■使い方1</div><div style="grid-row-end: span 2; background-color: #FAF;">■使い方2</div><div style="background-color: #FAF;">■使い方3</div><div style="background-color: #FAF;">■使い方4</div><div style="background-color: #FAF;">■使い方5</div><div style="background-color: #FAF;">■使い方6</div></div>
    
■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

"grid-row-end: span 2;"で、下方向と結合をします。

その結合によって「■使い方4」の置かれる場所が無くなったので、それ以降のブロックの配置が1つづつズレてしまいます。

数字を2から3に変えて、"grid-row-end: span 3;"にすると、さらに1つ下(つまり全部で3行分)を結合して次のようになります。(入力例は省略します。)

■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

さらに並び方が変化しました。

2つ前の状態から「■使い方5」も下と結合すると、次のようになります。

■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

あとは長い文章の部分も追加すると、最初に示した複雑なレイアウトが完成します。

ズレに注意

ここまでの例のように、結合すると(後ろの)ブロックの配置がずれていく事に注意してください。

1つ目のブロックから順に結合していかないと、こんがらがって配置が制御できなくなってしまいます。

また、結合をするときは改行型グリッドは失敗しやすくなります。

これもずれることが原因で、「改行ブロック」が意図しない所に配置され始めて、レイアウトがめちゃくちゃになりやすいです。

横に結合

上の例は下に結合してましたが、横(右)と結合することもできます。

「■使い方1」を右と結合するには次のように入力します。

        <div style="display: grid; grid-template-columns: auto auto; gap: 10px;"><div style="grid-column-end: span 2; background-color: #FAF;">■使い方1</div><div style="background-color: #FAF;">■使い方2</div><div style="background-color: #FAF;">■使い方3</div><div style="background-color: #FAF;">■使い方4</div><div style="background-color: #FAF;">■使い方5</div><div style="background-color: #FAF;">■使い方6</div></div>
    
■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

"grid-row-column: span 2;"で、右方向と結合をします。

これも数字を変えると、結合する数が変わります。

応用例

段数(および横幅指定)と結合の仕方を上手に制御すると、次のようにすることもできます。

■使い方1
 MP吸収で、燃料を断て!
 黒魔法アタッカーならそれで戦力外に出来ますし、見切り/先制/反射/不倒/損害制限などを発動させないようにすることで、他のアタッカーさんをサポートします。
■使い方2
 トークンを召還し、攻撃だ!
 パープルで直接剣秘技を使うより、トークンで剣秘技を使った方が強いです。
 トークンは無属性です。増加で威力を増やせば、全加護防衛キャラさんに有効打を与えることもできます。
 またトークンが倒されても被害は0です。不死アタッカーのように敵陣に突っ込ませるのも、お奨め戦術です。
■使い方3
 壁を作って耐えろ!
 トークンで奥配置の敵を吊り出したり、逆に、敵の移動を防ぐ壁として配置したり。
■使い方4
 今だ。秘技を使え!
 威力は低いですが剣秘技を使えます。見切りさんが相手ならワンチャンスあるかも?
■使い方5
 物理と魔法が合わさって…。
 剣通常攻撃(物理)+追加ダメージ(魔法)の変則キャラです。
 例えば「反射物理キャラ」「報復キャラ」を相手にするときには、「剣通常攻撃で弱めのダメージを与え、追加ダメージで止めをさす。」といった攻撃手段が有効な場合もあります。
■使い方6
 団結だ。友情パワー!
 攻撃はトークンにまかせて、自分は団結による支援を他の人に与えます。位置取りしやすい事は利点です。

これも簡略化した例で説明します。

まず、段数を4つにします。

        <div style="display: grid; grid-template-columns: auto auto auto auto; gap: 10px;"><div style="background-color: #FAF;">■使い方1</div><div style="background-color: #FAF;">■使い方2</div><div style="background-color: #FAF;">■使い方3</div><div style="background-color: #FAF;">■使い方4</div><div style="background-color: #FAF;">■使い方5</div><div style="background-color: #FAF;">■使い方6</div></div>
    
■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

次に「■使い方2」を右に3つ結合します。

        <div style="display: grid; grid-template-columns: auto auto auto auto; gap: 10px;"><div style="background-color: #FAF;">■使い方1</div><div style="grid-column-end: span 3; background-color: #FAF;">■使い方2</div><div style="background-color: #FAF;">■使い方3</div><div style="background-color: #FAF;">■使い方4</div><div style="background-color: #FAF;">■使い方5</div><div style="background-color: #FAF;">■使い方6</div></div>
    
■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

次に「■使い方3」と「■使い方4」を右に2つ結合します。

        <div style="display: grid; grid-template-columns: auto auto auto auto; gap: 10px;"><div style="background-color: #FAF;">■使い方1</div><div style="grid-column-end: span 3; background-color: #FAF;">■使い方2</div><div style="grid-column-end: span 2; background-color: #FAF;">■使い方3</div><div style="grid-column-end: span 2; background-color: #FAF;">■使い方4</div><div style="background-color: #FAF;">■使い方5</div><div style="background-color: #FAF;">■使い方6</div></div>
    
■使い方1
■使い方2
■使い方3
■使い方4
■使い方5
■使い方6

そして「■使い方5」を右に3つ結合すれば、レイアウトの骨組みは完成です。(入力例は省略します。

最後に元々のテキストを追加して、横幅の指定("auto auto auto auto"のところ)を調整すると完成です。

完成した入力例は下のようになります。ぜひ、実際にゲームの自由記入欄に入力して、このページと同じように表示されるのを実際に見てください。

        <div style="display: grid; grid-template-columns: 200px auto auto 200px; gap: 10px;"><div style="background-color: #FAF;">■使い方1
         MP吸収で、燃料を断て!
         黒魔法アタッカーならそれで戦力外に出来ますし、見切り/先制/反射/不倒/損害制限などを発動させないようにすることで、他のアタッカーさんをサポートします。</div><div style="grid-column-end: span 3; background-color: #FAF;">■使い方2
         トークンを召還し、攻撃だ!
         パープルで直接剣秘技を使うより、トークンで剣秘技を使った方が強いです。
         トークンは無属性です。増加で威力を増やせば、全加護防衛キャラさんに有効打を与えることもできます。
         またトークンが倒されても被害は0です。不死アタッカーのように敵陣に突っ込ませるのも、お奨め戦術です。</div><div style="grid-column-end: span 2; background-color: #FAF;">■使い方3
         壁を作って耐えろ!
         トークンで奥配置の敵を吊り出したり、逆に、敵の移動を防ぐ壁として配置したり。</div><div style="grid-column-end: span 2; background-color: #FAF;">■使い方4
         今だ。秘技を使え!
         威力は低いですが剣秘技を使えます。見切りさんが相手ならワンチャンスあるかも?</div><div style="grid-column-end: span 3; background-color: #FAF;">■使い方5
         物理と魔法が合わさって…。
         剣通常攻撃(物理)+追加ダメージ(魔法)の変則キャラです。
         例えば「反射物理キャラ」「報復キャラ」を相手にするときには、「剣通常攻撃で弱めのダメージを与え、追加ダメージで止めをさす。」といった攻撃手段が有効な場合もあります。</div><div style="background-color: #FAF;">■使い方6
         団結だ。友情パワー!
         攻撃はトークンにまかせて、自分は団結による支援を他の人に与えます。位置取りしやすい事は利点です。</div></div>
    

改行型グリッドと結合

改行型グリッドで結合を行うと「改行ブロック」のところズレて失敗しやすくなります。

しかしながら横方向の結合しか使わない場合は、ズレを上手く制御できるので失敗せずに結合できます。 やり方も難しくありません。以降に作り方を紹介しておきます。

最初に改行型グリッドで4×3の配置を作ります。

        <div style="display: grid; grid-template-columns: 0 auto 10px auto 10px auto 10px auto; gap: 10px 0;">
            <div style="background-color: #FAF;">■使い方1</div>
            <div style="background-color: #FAF;">■使い方2</div>
            <div style="background-color: #FAF;">■使い方3</div>
            <div style="background-color: #FAF;">■使い方4</div>
            <div style="background-color: #FAF;">■使い方5</div>
            <div style="background-color: #FAF;">■使い方6</div></div>
    

■使い方1

■使い方2

■使い方3

■使い方4

■使い方5

■使い方6

表示は4段に見えますが、改行型グリッドなので本当は8段になっているのがポイントです。

ここで前と同様に、「■使い方2」を右に3つ結合したいのですが、「改行ブロック」が間にあることに注意します。つまり、「右に3つ」ではなく「右に5つ」結合します。

        <div style="display: grid; grid-template-columns: 0 auto 10px auto 10px auto 10px auto; gap: 10px 0;">
            <div style="background-color: #FAF;">■使い方1</div>
            <div style="grid-column-end: span 5; background-color: #FAF;">■使い方2</div>
            <div style="background-color: #FAF;">■使い方3</div>
            <div style="background-color: #FAF;">■使い方4</div>
            <div style="background-color: #FAF;">■使い方5</div>
            <div style="background-color: #FAF;">■使い方6</div></div>
    

■使い方1

■使い方2

■使い方3

■使い方4

■使い方5

■使い方6

使い方3と使い方4、使い方5も考え方は同じです。

        <div style="display: grid; grid-template-columns: 0 auto 10px auto 10px auto 10px auto; gap: 10px 0;">
            <div style="background-color: #FAF;">■使い方1</div>
            <div style="grid-column-end: span 5; background-color: #FAF;">■使い方2</div>
            <div style="grid-column-end: span 3; background-color: #FAF;">■使い方3</div>
            <div style="grid-column-end: span 3; background-color: #FAF;">■使い方4</div>
            <div style="grid-column-end: span 5; background-color: #FAF;">■使い方5</div>
            <div style="background-color: #FAF;">■使い方6</div></div>
    

■使い方1

■使い方2

■使い方3

■使い方4

■使い方5

■使い方6

ここまで来れば、文章の追加と横幅の調整だけなので、以降は省略します。