8.flexbox 編

flexbox を使ってリキッドレイアウトを簡単にデザイン
ジェネレータを使えば簡単

様々な解像度の端末が混在する現代では、リキッドデザインが当たり前です。 レイアウトを考えるだけで時間を費やすことになりますが、flexbox を使えば簡単にリキッドデザインのレイアウトを構成できます。
構文を簡単に生成できるジェネレーターも様々公開されており、CSS Media Query と組み合わせる事で多様なデザインが可能になります。

当初ベンダープレフィックスを付与する必要が有ったブラウザーの殆どが、現在では対応している様です。

         mozilla MDN Web Docs 解説ページ
   developer.mozilla.org  developer.mozilla.org

   flexbox ジェネレータ サイト
   FLEXY BOXES  the-echoplex.net/flexyboxes
   css3generator.com  css3generator.com 
   CSSPortal  cssportal.com
Navi Open
Close Navi
ads by google
デモと概要
     flex box はCSS によるレイアウトモデルの事で flex boxの基本構造は2種類の主軸。 縦方向(column) と横方向(row)。
それぞれに順方向と逆方向の並び順を加えると4種類の基本モデルで構成されますが、基本となる親要素(親コンテナ)と子要素(アイテム)の構造は入れ子が可能な為、より複雑な組み合わせが可能となります。
   近年のブラウザーの殆どは対応していますが、少し以前のブラウザーには未対応の物が有る為「ベンダープレフィックス」(※-webkit--ms-等)の付与が必要でしたが、現在ではこれも解消されつつある様です。

[基本構成は以下の通り]※詳しくは前述「mozilla MDN Web Docs 解説ページ」をご参照ください。
   <親要素の記述>
display: flex;   flex box の宣言句
flex-direction: column(又は row);   子要素の並ぶ向き 垂直 or 水平
flex-wrap: wrap(又は wrap-reverse / nowrap);   子要素の折り返し  順方向 / 逆方向 / 折り返し無し
justify-content: flex-start(又は flex-end / center / space-between / space-around);   子要素の水平方向の揃え方 
align-items: flex-start(又は flex-end / center / start / end 等);   子要素の垂直方向の揃え方
align-content: start(又は center / end / flex-start / flex-end 等 );  子要素の垂直方向の分布

   <子要素の記述>
order: 0;  配置順序(0~)
flex: 0 1 auto;   伸びる比率 / 縮む比率 / ベース幅
align-self: auto;   垂直方向の揃え

DEMOページでは、基本の親要素(div id="container")に対して2つの子要素[box_A]と[box_B]を水平方向に配置(@media によって 1440px 以下では垂直方向に変更)し、更に[box_A]と[box_B]内に子要素[DEMOの解説では孫要素と記しています]を各水平方向と垂直方向に配置しています。
ブラウザーの水平方向(画面幅)をフレキシブルに変更しながら挙動を確認してみてください。
親要素並びに子要素のサイズを、固定指定・パーセント指定・カルク(calc)を使用した複合指定を利用する事で、更に自由度は増します。
先ずは基本形のレイアウトで試してみましょう。

※ ベンダープレフィックス についての参考例(項目によって若干記述が異なります)
    display: flex;  =
    display: -ms-flexbox; 
    display: -webkit-flex;

    flex-direction: column;  =
    -ms-flex-direction: column;
    -webkit-flex-direction: column;  

    flex-wrap: nowrap;  =
    -ms-flex-wrap: nowrap;
    -webkit-flex-wrap: nowrap; 

    justify-content: flex-start;  = 
    -ms-flex-pack: start;  
    -webkit-justify-content: flex-start;

    align-content: stretch;  = 
    -ms-flex-line-pack: stretch; 
    -webkit-align-content: stretch; 
 
    align-items: center;  = 
    -ms-flex-align: center;  
    -webkit-align-items: center;

    order: 0;  = 
    -ms-flex-order: 0; 
    -webkit-order: 0;

    flex: 0 0 auto;  = 
    -ms-flex: 0 0 auto;  
    -webkit-flex: 0 0 auto;

    align-self: auto;  = 
    -ms-flex-item-align: auto; 
    -webkit-align-self: auto;



 
構成:
親要素[container] flex-direction: row;
  子要素[Box_A] flex-direction: row;
     孫要素[A_01,A_02....]
  子要素[Box_A] flex-direction: column;
     孫要素[B_01,B_02....]

スクリーンサイズが狭くなると孫要素[A_01,A_02・・・]は  flex-wrap: wrap;   子要素の折り返し  順方向

解像度 1440px 以下では[Box_A][Box_B]は flex-direction: column から row へ変更   子要素の並ぶ向き 水平から垂直へ
HTML
ご覧の環境では、object要素がサポートされていないようです。外部文書を別ウィンドウで開いてください
CSS
ご覧の環境では、object要素がサポートされていないようです。外部文書を別ウィンドウで開いてください
JS
Javascript は有りません