PDFをモーダルウインドウに表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

モーダルウインドウ

PDFをモーダルウインドウに表示する方法

PDFをモーダルウインドウに表示する方法を紹介します。このサンプルでは、「PDFを表示」ボタンをクリックすると画面全体に半透明の背景が表示され、その中央にPDFを閲覧できるモーダルウインドウを開きます。PDFを別ページへ移動せず、その場で確認できるため、資料や案内書、マニュアルなどをページ内からすぐに閲覧できる構成を作れます。

会員サイトの資料確認、ECサイトの商品説明書、管理画面のマニュアル、サービス紹介ページのパンフレットなど、PDFをその場で確認してもらいたい場面に適しています。モーダル内にはPDFを表示するiframeを配置し、画面サイズに応じて横幅や高さを調整できるため、スマートフォン・タブレット・PCでも利用しやすい構成です。また、「×」ボタンまたは背景部分をクリックするとモーダルを閉じられます。

HTMLでは表示するPDFのURLやボタンの文章を変更でき、CSSではモーダルの最大横幅、余白、角丸、背景色、影、PDF表示領域の高さなどを調整できます。JavaScriptではモーダルの表示と非表示を切り替えるシンプルな処理を使用しています。PDFをページ本文へ常時表示せず、必要なときだけ大きく確認できるため、ページ内をすっきり見せながらPDF閲覧機能を追加したい場合に利用できます。

コードについて 本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。

デモ

PDFをモーダルで表示

ボタンをクリックすると、モーダルウインドウ内でPDFを閲覧できます。

「PDFを表示」をクリックするとモーダルウインドウ内でPDFを閲覧できます。「×」ボタンまたは背景部分をクリックすると閉じます。

コードをコピーして使おう!

<!DOCTYPE html>
<html lang="ja">
<head>

  <!-- 文字コード -->
  <meta charset="UTF-8">

  <!-- スマートフォン表示対応 -->
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- ページタイトル -->
  <title>PDFをモーダルウインドウに表示する方法</title>

  <!-- CSSファイルを読み込み -->
  <link rel="stylesheet" href="style.css">

</head>
<body>

  <!-- PDFモーダルを開く操作エリア -->
  <div class="pdf-modal-window_wrap">

    <!-- 操作エリアのタイトル -->
    <div class="pdf-modal-window_title">
      PDFをモーダルで表示
    </div>

    <!-- 操作エリアの説明文 -->
    <p class="pdf-modal-window_text">
      ボタンをクリックすると、モーダルウインドウ内でPDFを閲覧できます。
    </p>

    <!-- PDFモーダルを開くボタン -->
    <button
      class="pdf-modal-window_open"
      type="button"
      data-pdf-modal-open>
      PDFを表示
    </button>

  </div>

  <!-- モーダル背景 -->
  <div
    class="pdf-modal-window_overlay"
    data-pdf-modal-overlay>

    <!-- モーダル本体 -->
    <div
      class="pdf-modal-window_modal"
      role="dialog"
      aria-modal="true"
      aria-label="PDF表示モーダル">

      <!-- モーダルを閉じるボタン -->
      <button
        class="pdf-modal-window_close"
        type="button"
        data-pdf-modal-close
        aria-label="閉じる">
        ×
      </button>

      <!-- PDF表示エリア -->
      <div class="pdf-modal-window_frame">

        <!--
          【PDFファイルの設置方法】

          1. sampleフォルダ内に「pdf」フォルダを作成する。
          2. 表示したいPDFファイルをpdfフォルダへ配置する。
          3. このサンプルでは「sample.pdf」というファイル名を使用する。
          4. 別のPDFを使用する場合は、src属性のファイル名を書き換える。

          ファイル構成
          sample/
          ├── index.html
          ├── style.css
          ├── script.js
          └── pdf/
              └── sample.pdf

          例
          pdf/manual.pdf を表示する場合
          src="pdf/manual.pdf"

          PDFファイル自体はサンプル一式のZIPには含まれないため、
          利用者自身で用意してpdfフォルダへ配置する。
        -->
        <iframe
          src="pdf/sample.pdf"
          title="PDFサンプル">
        </iframe>

      </div>

    </div>

  </div>

  <!-- JavaScriptファイルを読み込み -->
  <script src="script.js"></script>

</body>
</html>
コードをコピーする場合 使用するコードのタブを選び、「このタブをコピー」をクリックすると、現在表示中のコードをコピーできます。
サンプル一式を取得する場合 HTML・CSSなどすべてのファイルが必要な場合は、「サンプル一式をダウンロード」をクリックしてください。
Q ダウンロードしたけど、これをネット上で動かすにはどうするの?
A

Googleアカウントがあれば、InfinityFreeで無料サーバーを作成して、ダウンロードしたサンプルをネット上で動かせます。

InfinityFreeを初めて利用する場合は①から、すでにサーバーを作成している場合は②へ進んでください。

ファイル構成と設置方法

このサンプルはHTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではPDFを表示するボタン、モーダルウインドウ、PDF表示用のiframeを作成し、CSSではモーダルの大きさや配置、背景、閉じるボタン、PDF表示エリア、表示アニメーションを設定します。JavaScriptでは「PDFを表示」ボタンでモーダルを開き、「×」ボタンまたは背景部分のクリックで閉じる処理を行います。

モーダル内へ表示するPDFファイルはサンプル一式のZIPには含まれていません。利用者自身でPDFファイルを用意し、sampleフォルダ内に「pdf」フォルダを作成して配置します。このサンプルではindex.htmlからpdf/sample.pdfを読み込む構成になっています。

sample/
├── index.html
├── style.css
├── script.js
└── pdf/
    └── sample.pdf

※pdf/フォルダとsample.pdfはサンプル一式のZIPには含まれていません。サンプルを使用するときに利用者自身で作成・配置してください。

各ファイルの役割
index.htmlはPDFモーダル全体を構成するファイルです。「PDFをモーダルで表示」のタイトル、説明文、「PDFを表示」ボタン、モーダル本体、閉じるボタン、PDF表示用のiframeを配置しています。表示するPDFファイルはiframeのsrc="pdf/sample.pdf"で指定しています。

style.cssは操作エリアとモーダルウインドウのデザインを設定するファイルです。操作エリアやモーダルの横幅、余白、背景色、角丸、影、閉じるボタンの大きさや位置、PDF表示エリアの高さ、モーダル表示時のアニメーションなどを設定しています。

script.jsはモーダルウインドウの開閉を制御するファイルです。「PDFを表示」ボタンをクリックするとis-activeクラスを追加してモーダルを表示し、「×」ボタンまたは背景部分をクリックするとis-activeクラスを削除してモーダルを閉じます。

pdf/sample.pdfはモーダルウインドウ内へ表示するPDFファイルです。このファイルはZIPには含まれていないため、利用者自身で用意します。

設置方法・使い方
sampleフォルダへindex.html・style.css・script.jsを配置します。次にsampleフォルダ内へpdfフォルダを作成してください。表示したいPDFファイルを用意し、sample.pdfというファイル名でpdfフォルダへ配置します。これでsample/pdf/sample.pdfという配置になります。

別のファイル名を使用する場合は、index.htmlのiframeにあるsrc="pdf/sample.pdf"も変更します。たとえばmanual.pdfを使用する場合は、PDFをsample/pdf/manual.pdfへ配置し、iframeをsrc="pdf/manual.pdf"へ変更してください。

PDFを配置したあと、sample/index.htmlをブラウザで開きます。「PDFを表示」ボタンをクリックすると、pdfフォルダへ配置したPDFがモーダルウインドウ内に表示されます。「×」ボタンまたはモーダル外側の背景部分をクリックするとモーダルを閉じます。

カスタマイズできる内容
index.htmlでは「PDFをモーダルで表示」のタイトル、説明文、「PDFを表示」ボタンの文字、iframeのsrc属性とtitle属性を変更できます。表示するPDFを変更する場合は、pdfフォルダへPDFファイルを配置し、src属性を実際のファイル名に合わせて変更します。

style.cssでは操作エリアの横幅や余白、背景色、枠線、角丸、ボタンの色や大きさ、モーダル背景の濃さ、モーダル本体の横幅や余白、角丸、影、PDF表示エリアの高さ、閉じるボタンの大きさや位置、表示アニメーションの速度を変更できます。

数値調整
style.css
max-width:700px;
PDFを開く操作エリアの最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
操作エリアの上下余白です。40pxを大きくすると上下の間隔が広がり、小さくすると狭くなります。

padding:32px;
操作エリアの内側余白です。値を大きくすると内容と枠線の間隔が広がり、小さくすると狭くなります。

border-radius:18px;
操作エリアとモーダル本体の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:22px;
操作エリアのタイトルの文字サイズです。値を大きくすると文字が大きくなり、小さくすると小さくなります。

margin:0 0 24px;
説明文の下側余白です。24pxを大きくすると「PDFを表示」ボタンとの間隔が広がり、小さくすると狭くなります。

padding:12px 24px;
「PDFを表示」ボタンの内側余白です。上下の12pxを大きくするとボタンが縦に大きくなり、左右の24pxを大きくすると横に広がります。

padding:20px;
モーダル背景の画面端との余白です。値を大きくするとモーダルと画面端の間隔が広がり、小さくすると狭くなります。

max-width:920px;
モーダル本体の最大横幅です。値を大きくするとモーダルが横に広がり、小さくすると狭くなります。

padding:52px 20px 20px;
モーダル本体の内側余白です。上側の52pxは閉じるボタンを配置するための余白で、左右と下側には20pxの余白を設定しています。

top:12px;・right:12px;
「×」ボタンの位置です。topの値を大きくすると下へ移動し、rightの値を大きくすると左へ移動します。

width:38px;・height:38px;
「×」ボタンの横幅と高さです。値を大きくするとボタンが大きくなり、小さくすると小さくなります。

height:70vh;
PDF表示エリアの高さです。画面高さの70%を基準にしており、値を大きくすると表示領域が高くなり、小さくすると低くなります。

min-height:420px;
PDF表示エリアの最小高さです。値を大きくすると最低限確保される高さが大きくなり、小さくすると低くなります。

border-radius:12px;
PDF表示用iframeの角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

animation:pdf-modal-window_show .3s ease forwards;
モーダルを表示するときのアニメーション時間です。.3sは0.3秒を表します。値を大きくするとゆっくり、小さくすると速く表示されます。

transform:scale(.95);
表示アニメーション開始時のモーダルの大きさです。.95は通常サイズの95%を表します。値を小さくすると表示開始時と終了時の拡大幅が大きくなります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのモーダル本体にはwidth:100%とmax-width:920pxを指定しているため、画面幅が狭くなるとモーダルも画面に合わせて縮小します。PDF表示用iframeにはwidth:100%とheight:100%を指定しており、PDF表示エリアの大きさに合わせて表示されます。

画面幅640px以下ではメディアクエリが適用され、操作エリアの余白がpadding:24px 18px;、モーダル本体の余白がpadding:52px 14px 14px;へ変更されます。PDF表示エリアもheight:60vh;、min-height:320px;へ変更されるため、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント