2018年4月17日火曜日

bulma でモーダルを制御してみる

概要

bulma にはモーダルを表示するための機能があります
https://bulma.io/documentation/components/modal/

今回はそれを使ってみました
説明のベースとなるアプリは過去に紹介した Sinatra アプリになります
必要な部分のコードのみ紹介します
ただ、今回紹介するコードでは Sinatra アプリ側のコードは一切登場しないので Sinatra 環境がなくても全く問題ありません

環境

  • macOS 10.13.2
  • Ruby 2.4.1p111
  • sinatra 2.0.1
  • bulma 0.6.2
  • jQuery 3.3.1

モーダルを表示するボタンの作成

id 属性を使ってボタンを特定できるようにします

<a class="button is-small is-primary" id="show_action">Show</a></td>

モーダル用の div タグを作成

HTML 内のどこでもいいのでモーダル表示用の div タグを追記しましょう
今回は body タグの直前に記載しました

... 省略

  <div class="modal">
    <div class="modal-background"></div>
    <div class="modal-content">
      <div class="notification is-danger">
        This area has danger messages.
      </div>
    </div>
  <button class="modal-close is-large" aria-label="close"></button>
  </div>
  <script async type="text/javascript" src="../js/bulma.js"></script>
  <script async type="text/javascript" src="../js/form.js"></script>
</body>
</html>

表示する内容は bulma の notification を使っています
ここの内容は何でも OK なので好きなものを設置してください

ボタンを押した際の処理を実装

jQuery を使っています
ポイントはボタンを押した際に先ほどの div タグの modal クラスに is-active というクラスを追加してあげる点です

$("#show_action").on("click", function() {
  $("div.modal").addClass("is-active");
})

$('div.modal-background,button.modal-close').on('click', function() {
  $("div.modal").removeClass("is-active");
})

またモーダルが表示されたあとに画面をクリックしたらモーダルが消える処理も追加しています
モーダルを消すのは単純に追加した is-active クラスを削除するだけで OK です

動作確認

では動作確認してみましょう
今回であれば以下のように動作すれば OK です
bulma_modal1.gif

最後に

bulma のモーダル機能を使ってみました
JavaScript を使って表示/非表示を制御する必要はありますが簡単に使えると思います

参考サイト

0 件のコメント:

コメントを投稿