LoginSignup
2
1

More than 3 years have passed since last update.

Bootstrapで五十音表

Last updated at Posted at 2020-09-20

はじめに

bootstrap4で五十音表の索引を作成しました。
再利用するかもしれないので、記事として残しておきます。

完成品

スクリーンショット 2020-09-20 8.10.37.png

コード

<div class="d-table text-nowrap" style="border-collapse: separate; border-spacing: 2pt;">
        <div class="d-table-row">
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button">その他</button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
        </div>
        <div class="d-table-row">
            <div class="d-table-cell"></div>
            <div class="d-table-cell"></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell"></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
        </div>
        <div class="d-table-row">
            <div class="d-table-cell"></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button" disabled></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
        </div>
        <div class="d-table-row">
            <div class="d-table-cell"></div>
            <div class="d-table-cell"></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell"></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
        </div>
        <div class="d-table-row">
            <div class="d-table-cell"></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
            <div class="d-table-cell border"><button class="btn btn-link btn-block" type="button"></button></div>
        </div>
    </div>

上のコードでは省きましたが、
実際に使用するときは、各ボタンにidを設定するなどして、
jsから操作できるようにします。

最初のdivに.containerを追加するとレスポンシブになります。
でも大きい画面で見ると五十音表が広がりすぎて、むしろ押しにくい気がするので悩みどころ。

解説

解説というより、
なるべくbootstrap4を使ってラクするためのメモです。

display: table

div要素などをテーブルのように扱うためのスタイルです。
bootstrap4ではclassに.d-table, .d-table-row, .d-table-cellを設定します。
cssだけで実装する場合はdisplay: table, display: table-row, display: table-cellがそれぞれ対応します。

セルのマージン

display: tableは、そのままではセル間にマージンがないため、
border-collapse: separate;
border-spacing: 2pt;
で、2ptのマージンを入れています。

セル

<div class="d-table-cell border">
    <button class="btn btn-link btn-block" type="button"></button>
</div>

セルにはオンマウスで下線がつく.btn-linkを指定したボタン要素を使いました。
paddingやhoverなどをcssで自分で設定する手間が省けます。
ただ、btn-linkにはボーダーがないため、親のdiv要素に.borderでボーターをいれています。

<button class="btn btn-link btn-block" type="button" disabled></button>

「を」などの該当する検索対象がないものは、disabledにしています。

折り返し設定

最初のdiv要素に.text-nowrapを設定することで、セル内で文字が折り返さないようにしています。
ブラウザのサイズが小さいときに下図のように「その他」が折り返してしまうの防いでいます。
ただし表が画面に収まらなくなってしまいます。

スクリーンショット 2020-09-20 9.25.55.png

おわりに

紆余曲折したせいで
divタグのdisplayをtableにしたものを使っているけど、
普通にtableタグを使えばよかったかも><

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1