レイアウト:rowとcol

等幅カラム、レスポンシブなし、そのまま縮小:rowとcol


1列目
2列目
1列目
2列目
3列目

  <div class="row">
    <div class="col">1列目</div>
    <div class="col">2列目</div>
  </div>
  <div class="row">
    <div class="col">1列目</div>
    <div class="col">2列目</div>
    <div class="col">3列目</div>
  </div>

合計12になるようにカラムの幅を指定する:col-*


col-2
col-4
col-6

  <!-- 画面の大きさにより12分割され、数字の値の幅が割り当てられる -->
  <div class="row">
    <div class="col-2">col-2</div>
    <div class="col-4">col-4</div>
    <div class="col-6">col-6</div>
  </div>

1カラムのみ幅を設定、残りは等価:col-6


col
col-6
col

  <div class="row">
    <div class="col">col</div>
    <!-- 1つに数字を指定すると、それが確保され、残りは自動で等価に設定される -->
    <div class="col-6">col-6</div>
    <div class="col">col</div>
  </div>

可変幅カラム(コンテンツの文字数により幅が可変になる):col-auto


col
col-auto:コンテンツ文字数によってが幅が可変
col
col
col-md-auto:Medium以上でコンテンツ文字数によって幅が可変
col

  <div class="row">
    <div class="col">col</div>
    <div class="col-auto">col-auto:コンテンツ文字数によってが幅が可変</div>
    <div class="col">col</div>
  </div>
  <div class="row">
    <div class="col">col</div>
    <!-- col-mdは、Medium以上の指定方法 -->
    <div class="col-md-auto">col-md-auto:Medium以上でコンテンツ文字数によって幅が可変</div>
    <div class="col">col</div>
  </div>

1つのrow内で12を超える場合、勝手に折り返り:col-9


col-9
col-4
col-6

  <div class="row">
    <div class="col-9">col-9</div>
    <div class="col-4">col-4</div>
    <div class="col-6">col-6</div>
  </div>

colなしのタグ挿入すると、そこで折り返しが起こる:w-100


col
col
w-100
col
col

  <div class="row">
    <!-- 改行したい場合は、この方法を使う -->
    <div class="col">col</div>
    <div class="col">col</div>
    <!--コンテンツを省略すれば単なる改行になる -->
    <div class="w-100">w-100</div>
    <div class="col">col</div>
    <div class="col">col</div>
  </div>

ブレイクポイントによる切り替え:col-sm-8


col-sm-8
col-sm-4
col-sm
col-sm
col-sm

  <!-- col-smの指定がブレークポイントとして機能する、スマートフォン(横持ち)の場合の指定ー -->
  <div class="row">
    <div class="col-sm-8">col-sm-8</div>
    <div class="col-sm-4">col-sm-4</div>
  </div>
  <div class="row">
    <div class="col-sm">col-sm</div>
    <div class="col-sm">col-sm</div>
    <div class="col-sm">col-sm</div>
  </div>

グリッドレイアウトのネスト(入れ子、階層化):colとrow


第1階層: col-sm-9
第2階層: col-8
第2階層: col-4
第1階層: col-sm-3

  <!-- rowの幅は、ひとつ上のhtmlタグの幅に制約を受けて100%になる -->
  <div class="row">
    <div class="col-sm-9">第1階層: col-sm-9
      <!-- 階層化colの中にrowcolの幅を基準にして12の計算が始まる -->
      <div class="row">
        <!-- colを2つ書くと、それぞれの画面の状況により適用されるものが変わる -->
        <div class="col-8">第2階層: col-8</div>
        <div class="col-4">第2階層: col-4</div>
      </div>
    </div>
    <div class="col-sm-3">第1階層: col-sm-3</div>
  </div>

rowとcolの左寄せと余白で配置:justify-content:flex-start


col-4
col-4

  <!-- 左寄せでスタート、12の残りは勝手に余白になる -->
  <div class="row justify-content-start">
    <div class="col-4">col-4</div>
    <div class="col-4">col-4</div>
  </div>

rowとcolの中央寄せと余白で配置:justify-content-center


col-4
col-4

  <!-- 中央寄席でスタート、12の残りは勝手に余白になる -->
  <div class="row justify-content-center">
    <div class="col-4">col-4</div>
    <div class="col-4">col-4</div>
  </div>

rowとcolの右寄せと余白で配置:justify-content-end


col-4
col-4

  <!-- 右寄せでスタート、12の残りは勝手に余白になる -->
  <div class="row justify-content-end">
    <div class="col-4">col-4</div>
    <div class="col-4">col-4</div>
  </div>

rowとcolの等間隔と余白で配置:justify-content-around


col-4
col-4

  <!-- 中央に等間隔に配置され、残りは勝手に余白になる -->
  <div class="row justify-content-around">
    <div class="col-4">col-4</div>
    <div class="col-4">col-4</div>
  </div>

rowとcolの両端から均等と余白で配置:justify-content-between


col-4
col-4

  <!-- 左右に配置され、残りは勝手に余白になる -->
  <div class="row justify-content-between">
    <div class="col-4">col-4</div>
    <div class="col-4">col-4</div>
  </div>

rowとcolの整列垂直:align-items-startとalign-items-centerとalign-items-end


col
col
col
col
col
col
col
col
col

  <!-- 上寄せ、高さは、隣接rのrowに設定する -->
  <div class="row align-items-start border bg-light">
    <div class="col">col</div>
    <div class="col">col</div>
    <div class="col">col</div>
  </div>
  <div class="row align-items-center border bg-light">
    <div class="col">col</div>
    <div class="col">col</div>
    <div class="col">col</div>
  </div>
  <!-- 下寄せ高さは隣接rowで決まる模様 -->
  <div class="row align-items-end border bg-light">
    <div class="col">col</div>
    <div class="col">col</div>
    <div class="col">col</div>
  </div>

rowとcolの整列垂直:align-self-*


align-self-start
align-self-center
align-self-end

  <div class="row">
    <!-- 垂直上寄せ -->
    <!-- itemは、rowに設定、selfはcolに設定 -->
    <div class="col align-self-start">align-self-start</div>
    <!-- 垂直中央寄せ -->
    <div class="col align-self-center">align-self-center</div>
    <!-- 垂直下寄せ -->
    <div class="col align-self-end">align-self-end</div>
  </div>

rowとcolの画面の状況でカラムの幅を変える、Medium以上:col-md-8


col-12とcol-md-8
col-6とcol-md-4

  <div class="row">
    <!-- Medium以上:だとmdが優先的に選択される -->
    <!-- xl:デスクトップ PC などの大画面モニタ 1200px 以上 -->
    <!-- lg:ノート PC などの省サイズモニタ 992px 以上 -->
    <!-- md:タブレット端末など 768px 以上 -->
    <!-- sm:スマートフォン(横持ち)など 576px 以上 -->
    <!-- -:スマートフォン(縦持ち)、IoT 端末など 576px 未満 -->
    <div class="col-12 col-md-8">col-12とcol-md-8</div>
    <div class="col-6 col-md-4">col-6とcol-md-4</div>
  </div>

rowとcolの画面の状況で変える、Medium以上:Medium以上:col-md-4


col-6とcol-md-4
col-6とcol-md-4
col-6とcol-md-4

  <div class="row">
    <!-- Medium以下なら、2列カラムにある-->
    <div class="col-6 col-md-4">col-6とcol-md-4</div>
    <div class="col-6 col-md-4">col-6とcol-md-4</div>
    <div class="col-6 col-md-4">col-6とcol-md-4</div>
  </div>

rowとcolの行の分割をブレイクポイントで切り替える:d-none d-md-block


col
col
col
col

  <div class="row">
    <div class="col">col</div>
    <div class="col">col</div>
    <div class="w-100 d-none d-md-block"></div>
    <!-- Medium以上では{dsplay:block}、未満では{display:none} -->
    <div class="col">col</div>
    <div class="col">col</div>
  </div>

水平方向のカラム間のガター:gx-5


p-3 border bg-light
p-3 border bg-light

  <!-- ガターとは、カラム間のパディング、padding によって作られるカラムの隙間のことです。 -->
  <!-- 各カラムに padding-right と padding-leftを設定し、各行の最初と最後にネガティブ margin でオフセットしてコンテンツを揃えます。。 -->
  <!--不要なオーバーフローを避けるため .container や.container-fluid を親要素に設定することもできます。たとえば、次の例では .px-4 でパディングを増やしています  -->
  <div class="container px-4">
    <div class="row gx-5">
      <div class="col">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
    </div>
  </div>

垂直方向のカラム間のガター、オーバーフロー処理:gy-5


p-3 border bg-light
p-3 border bg-light
p-3 border bg-light
p-3 border bg-light

  <!--垂直方向のガターはページの最後にある .row の下にオーバーフローを引き起こす可能性があります。-->
  <!-- container overflow-hidden で、はみ出しrow部分を無視する -->
  <!-- このような場合は、.row を.overflow-hidden でラップするとも言う  -->
  <div class="container overflow-hidden">
    <div class="row gy-5">
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
    </div>
  </div>

水平・垂直方向の同時ガター:g-2


p-3 border bg-light
p-3 border bg-light
p-3 border bg-light
p-3 border bg-light

  <div class="container">
    <!-- g-* クラスは水平・垂直ガターを設定する -->
    <div class="row g-2">
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
      <div class="col-6">
        <div class="p-3 border bg-light">p-3 border bg-light</div>
      </div>
    </div>
  </div>

rowとcolのガター:g-2 g-lg-3


Row column
Row column
Row column
Row column
Row column
Row column
Row column
Row column
Row column
Row column

  <!-- row columnsに ガタを使うことができるー-->
  <div class="row row-cols-2 row-cols-lg-5 g-2 g-lg-3">
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
    <div class="col">
      <div class="p-3 border bg-light">Row column</div>
    </div>
  </div>

rowとcolのガターなしカラム:g-0


.col-sm-6 .col-md-8
.col-6 .col-md-4

  <!-- 定義済みのガタークラスは .g-0 で取り除くことができます -->
  <div class="row g-0">
    <div class="col-sm-6 col-md-8 border bg-light">.col-sm-6 .col-md-8</div>
    <div class="col-6 col-md-4 border bg-light">.col-6 .col-md-4</div>
  </div>

rowとcolの何も書かなければガターあり(はみ出る):rowとcol


col
col

  <!-- 左と右が枠からはみ出ている -->
  <div class="row">
    <div class="col">col</div>
    <div class="col">col</div>
  </div>

rowとcolのカラムのオフセット offset-md-4


col-md-4
col-md-4とoffset-md-4

  <div class="row">
    <!-- オフセットとは、基準点からの距離で、その距離分だけ余白を作るということ-->
    <div class="col-md-4">col-md-4</div>
    <!-- Medium以上で4列分左に移動 -->
    <!-- margin-left: 33.333333%; マージンレフトを設定して間を空ける-->
    <div class="col-md-4 offset-md-4">col-md-4とoffset-md-4</div>
  </div>

rowとcolのオフセットのリセット:offset-md-0


col-sm-5とcol-md-6
col-sm-5とoffset-sm-2とcol-md-6とoffset-md-0

  <div class="row">
    <div class="col-sm-5 col-md-6">col-sm-5とcol-md-6</div>
    <!-- Medium以上でオフセットをクリア -->
    <div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">col-sm-5とoffset-sm-2とcol-md-6とoffset-md-0</div>
  </div>

rowとcolのコンテンツの並べ替え:order-1~order-12


第1のカラム(順序指定なし)
第2のカラム(順序指定は12)
第3のカラム(順序指定は1)

  <div class="row">
    <!-- orderの数字の小さい順に並ぶ、プログラムでhtmlを書くときは便利 -->
    <!-- order-md-2等もサポート(画面の大きさに応じて並べ替える) -->
    <div class="col">第1のカラム(順序指定なし)</div>
    <div class="col order-12">第2のカラム(順序指定は12)</div>
    <div class="col order-1">第3のカラム(順序指定は1)</div>
  </div>

rowとcolのコンテンツの並べ替え:order-first


第1のカラム(順序指定なし)
第2のカラム(順序指定なし)
第3のカラム(順序指定は1)

  <div class="row">
    <div class="col">第1のカラム(順序指定なし)</div>
    <div class="col">第2のカラム(順序指定なし)</div>
    <!-- order-firstが最初に並ぶ、プログラムでhtmlを書くときは便利 -->
    <div class="col order-first">第3のカラム(順序指定は1)</div>
  </div>