CSSでリストから表を作る方法!2列3列4列のレイアウトはgridで簡単にできる!

記事内に広告が含まれています。
2016-07-16_202109

HTML、CSSのカスタマイズを多少でもする人はよく出くわすと思いますが、ul, li を使ったリストがあり、それをCSSを使って表形式にしたい場合が結構あります。

tableプロパティでも実現できますが、
今では grid や flex を使うと物凄く簡単にできますね。

ここでは grid を使った場合の例をご紹介。

grid を使って表のレイアウト!

サンプルリスト0

まずは元となるリストの普通のサンプルです。

カテゴリを5つとして、各カテゴリに適当に項目を並べてます。

  • カテゴリ1
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
  • カテゴリ2
    • 項目1
    • 項目2
  • カテゴリ3
    • 項目1
    • 項目2
    • 項目3
  • カテゴリ4
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
    • 項目6
  • カテゴリ5
    • 項目1
    • 項目2

ワードプレスではプラグインがよくこのようなリスト表示をしてますが、ここで、このサンプルリストをCSSのgridプロパティを利用して、普通に横一列の表タイプ、また更に2列や3列にしてみましょう

サンプルリスト1(横1列のテーブル)

まずはテーブルの基本形ということで、
普通に横一列のテーブルにするには、以下のCSSを指定します。

要素指定するCSS解説
親要素のul(class="listtest1")display: grid;Gridレイアウトを使う。
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));1fr:1列表示に。
auto-fit:画面幅に出来るだけ列を入れる(画面幅が狭いと折り返す)
最小100pxとして、余ったスペースを均等に分配。
gap: 0;要素同士の隙間はなくしておく
ul直下の子要素のliborder: 1px solid #ccc;分かりやすいよう枠線を付けておく。(なしでもOK)
margin:0;表らしく隙間をなくしてみる
padding: .5em;内側の余白は少しいれておく

さて、これらのCSSを指定する以下のようになります。

  • カテゴリ1
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
  • カテゴリ2
    • 項目1
    • 項目2
  • カテゴリ3
    • 項目1
    • 項目2
    • 項目3
  • カテゴリ4
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
    • 項目6
  • カテゴリ5
    • 項目1
    • 項目2

実際のCSSの指定は以下のとおりです。
表にしてる部分は2~6行目の個所だけ。かなりシンプルですね。^-^)

repeat(auto-fit, minmax(100px, 1fr)) では、画面幅に応じて折り返しにもなりますが、折り返しにしたくない場合にはwhite-space: nowrap;を指定しておけば良さそうです。

続いて2列、3列などの例を見てみましょう。
同様に簡単にできますね。

サンプルリスト2(2列のテーブル)

次は「2列のテーブル」にしてみます。
指定するCSSは以下のとおり。

※)上のサンプルからの違いは赤文字箇所です

要素指定するCSS解説
親要素のul(class="listtest2")display: grid;Gridレイアウトを使う。
grid-template-columns: repeat(2, 1fr);2列表示に
auto-fitに変えて数字で列指定。
gap: 0;要素同士の隙間はなくしておく
ul直下の子要素のliborder: 1px solid #ccc;分かりやすいよう枠線を付けておく。(なしでもOK)
margin:0;表らしく隙間をなくしてみる
padding: .5em;内側の余白は少しいれておく

さて、これらのCSSを指定すると、以下のように表示が変わります。

  • カテゴリ1
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
  • カテゴリ2
    • 項目1
    • 項目2
  • カテゴリ3
    • 項目1
    • 項目2
    • 項目3
  • カテゴリ4
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
    • 項目6
  • カテゴリ5
    • 項目1
    • 項目2

2列に並びましたね!
実際のCSSの指定は以下のとおりです。

サンプルリスト3(3列のテーブル)

では続いて3列ですが、数字を変えるだけ。

要素指定するCSS解説
親要素のul(class="listtest3")display: grid;Gridレイアウトを使う。
grid-template-columns: repeat(3, 1fr);3列表示に
2から3に変更。
gap: 0;要素同士の隙間はなくしておく
ul直下の子要素のliborder: 1px solid #ccc;分かりやすいよう枠線を付けておく。(なしでもOK)
margin:0;表らしく隙間をなくしてみる
padding: .5em;内側の余白は少しいれておく

さて、これらのCSSを指定すると、以下のように3列の表になります。

  • カテゴリ1
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
  • カテゴリ2
    • 項目1
    • 項目2
  • カテゴリ3
    • 項目1
    • 項目2
    • 項目3
  • カテゴリ4
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
    • 項目6
  • カテゴリ5
    • 項目1
    • 項目2

ほっほー、3列に並びました!
実際のCSSの指定は以下のとおりです。

サンプルリスト4(4列のテーブル)

4列も見てみますが、後は数値を変えるだけ。

※)上のサンプルからの違いは赤文字箇所です

要素指定するCSS解説
親要素のul(class="listtest4")display: grid;Gridレイアウトを使う。
grid-template-columns: repeat(4, 1fr);4列表示に
3から4に変更。
gap: 0;要素同士の隙間はなくしておく
ul直下の子要素のliborder: 1px solid #ccc;分かりやすいよう枠線を付けておく。(なしでもOK)
margin:0;表らしく隙間をなくしてみる
padding: .5em;内側の余白は少しいれておく

これらのCSSを指定すると、以下のように表示されます。

  • カテゴリ1
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
  • カテゴリ2
    • 項目1
    • 項目2
  • カテゴリ3
    • 項目1
    • 項目2
    • 項目3
  • カテゴリ4
    • 項目1
    • 項目2
    • 項目3
    • 項目4
    • 項目5
    • 項目6
  • カテゴリ5
    • 項目1
    • 項目2

4列に並びました!
実際のCSSの指定は以下のとおり。

ここまで見てきたように、ul li のリストを
gidを使えば簡単に表のように見せることが出来ますね!

flexプロパティを使っても簡単にできますね。
以下も参照してみてください。

今回のまとめ

  • gridプロパティを使えば、リストから簡単にテーブルレイアウトができる
  • 横一列:repeat(auto-fit, minmax(100px, 1fr)) を使う
    (画面幅に応じて、横一列 or 自動折り返し になる)
  • 2列以上:repeat(xx, 1fr) を使う(xx:2, 3, 4, … )

ちょっと前までは tableプロパティを使って、少しややこしい感じのCSSでリストを表にしてたりしましたが、今では gidで凄く簡単にできますね。

こうした便利なプロパティを活用して個性を出していくと、
他に比べて魅力ある個性的なサイトになっていくと思います。

またネットで収入を得たい!収益に変えたい!という方は、
以下のメルマガも見てみてくださいね。

早期退職して海外で奮闘する JIN のメールマガジン

時間や場所に縛られず稼いだJINが教える

~ 最短で月収10万円稼げるようになる方法 ~

お名前(全角文字)

隣のあの人にも、思わず教えたくなる秘密

配信停止は、いつでもできます

迷惑メールは一切配信されませんので、ご安心くださいね

自らの手で未来を変える力を手に入れる!

コメント