お品書き
書き直し中…
とりあえず、中へどうぞ
↓↓↓
スポンサーリンク

gridレイアウトに挑戦 ー エリア名指定型

WEBデザイン
Flexboxがある程度分かったので、次はGridレイアウトに挑戦

FlexboxとGridレイアウトの違いと使い分けは後回しにするとして。

とりあえずGridレイアウトを作ってみた。

Gridレイアウトの指定の仕方は二種類、エリア名で指定する方法と、ライン番号で指定する方法がある。

エリア型のほうが分かりやすそうなので、それでやってみた。

※IE11は CSS Grid への対応が不完全で、特殊な記述の仕方が必要なようです。

ベンダープレフィックスの自動修正はこちら
基本構造はFlexboxと同じ、gridレイアウトを行う親領域を指定し、その中に子要素(アイテム)を配置する。

Flexboxと違うのは、最初に格子状に領域を定義し、その中のどの部分に要素を置くかを指定するだけ。

親領域は
#親領域名{
display:grid;
grid-template-rows:高さ 高さ;
grid-template-columns: 幅 幅 幅;
}
のように定義する。

grid-template-rows:
grid-template-columns:

で格子(Grid)状の領域の大きさと数を定義

そして

grid-template-areas

で各領域に名前を割り振る。
grid-template-areas:
"領域名 領域名 領域名"
"領域名 領域名 領域名";
中に入れる要素は
grid-area:領域名;
で指定してやると、その位置に表示される。

例:以下のように定義すると
CSS
#grid_container{ display:grid; grid-template-rows:75px 75px; grid-template-columns:100px 100px 100px; grid-template-areas: "A B C" "D E F";} .itemA{grid-area:A;} .itemB{grid-area:B;} .itemC{grid-area:C;} .itemD{grid-area:D;} .itemE{grid-area:E;} .itemF{grid-area:F;}
HTML
<div id="grid_container"> <div class="itemA">A</div> <div class="itemB">B</div> <div class="itemC">C</div> <div class="itemD">D</div> <div class="itemE">E</div> <div class="itemF">F</div> </div>
こうなる↓
A
B
C
D
E
F
隣り合った領域をつなげることもできる。

上の例では、grid-template-areas: によって、六個所の領域が
"A B C"
"D E F";
として、視覚的に定義されている。

これを、下のようにすると、
grid-template-areas: "A B C" "A D D";
AとDの領域、及び、EとFの領域を繋げることができる。↓
A
B
C
D
※繋ぐ事ができるのは、あくまで隣り合ったグリッド同士だけで、L字型やT字型、コの字型などの領域を作ることはできない。
グリッドレイアウトを利用して、OGPで表示される領域をデザインしてみたけれど・・・
脅迫メールに正しいパスワードが書かれていた!!「緊急対応! あなたの心の安らぎの問題」
同じメールが個人用のメールアドレスにも届きまして。まったく同じ文面なのですが、驚いたのは同じメールが個人用のメールアドレスにも届きまして。まったく同じ文面なのですが、驚いたのは…
pandaignis.com
この程度のデザインではグリッドレイアウトの恩恵はあまりなかった…(^^;) Flexbox でも Float でもTableでも十分可能。。。。

古いブラウザとの互換性を考えると、わざわざ対応ブラウザの少ない新機能を使うより、Float か Table でやるべきか。。。

コメント