なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

【Lightbox for Bootstrap】Bootstrap4でモーダル画像をお手軽に実装する方法

今回はクリックすると『フワっ』と拡大表示される『モーダル画像』を『Bootstrap4』でお手軽に実装する方法をご紹介したいと思います。

f:id:karupoimou:20200227174739p:plain:w400
モーダル

使用するのは『Lightbox for Bootstrap』

モーダルの導入はBootstrap4だけでも可能と言えば可能ですが、今回は既に先人が作って配布してくださっている『Lightbox for Bootstrap』を使わせてもらうことにします。

Lightbox for BootstrapはCDN版があるのでダウンロードしなくても使えます。

ashleydw.github.io

今回はBoostrapの公式サイトで公開されている公式テンプレートをベースにモーダル画像を実装していきます。

実装サンプルコード

<!doctype html>
<html lang="ja">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    <!-- Lightbox for Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/5.3.0/ekko-lightbox.css" />
    
    <title>Hello, world!</title>
  </head>
  <body>
    <h1>Hello, world!</h1>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

    <!-- Lightbox for Bootstrap -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/5.3.0/ekko-lightbox.min.js"></script>

    <!-- メイン部分 -->
    <div class="container">
      <div class="row my-4 text-center">
        <div class="col">
          <a href="https://mirunovel.com/modal/001.png" data-toggle="lightbox" data-title="サンプル画像" data-footer="フッター">
              <img src="https://mirunovel.com/modal/001.png" alt="サンプル画像" class="img-fluid my-2 border">
          </a>
        </div>
    </div>


    <!-- ボディ最下部にモーダル用javascriptを設置 -->
    <script type="text/javascript">
      $(document).on('click', '[data-toggle="lightbox"]', function(event) {
                  event.preventDefault();
                  $(this).ekkoLightbox();
              });
    </script>
  </body>
</html>

コードの説明

    <!-- Lightbox for Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/5.3.0/ekko-lightbox.css" />

まずヘッダー内でモーダル用のCSSを読み込みます

    <!-- Lightbox for Bootstrap -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/ekko-lightbox/5.3.0/ekko-lightbox.min.js"></script>

次にモーダル用のjavascriptを読み込みます。このjavascriptは必ずBootstrap JSより下の位置に設置する必要があります。

          <a href="https://mirunovel.com/modal/001.png" data-toggle="lightbox" data-title="サンプル画像" data-footer="フッター">
              <img src="https://mirunovel.com/modal/001.png" alt="サンプル画像" class="img-fluid my-2 border">
          </a>

次にモーダル画像を設置します。
aタグに「data-toggle="lightbox" 」を付けることでリンク先をモーダル化できます。
「data-title="サンプル画像" data-footer="フッター"」は上下に表示される文字の指定となっています。

f:id:karupoimou:20200227174739p:plain:w400
モーダル表示のサンプル

    <!-- ボディ最下部にモーダル用javascriptを設置 -->
    <script type="text/javascript">
      $(document).on('click', '[data-toggle="lightbox"]', function(event) {
                  event.preventDefault();
                  $(this).ekkoLightbox();
              });
    </script>

最後にボディの最下部にモーダル用のjavascriptを設置すれば完了です。

実装サンプルページ

mirunovel.com