PDFをドロップダウンメニューに表示する方法【HTML/CSS/JavaScript・サンプルコード付き】

ドロップダウンメニュー

PDFをドロップダウンメニューに表示する方法

PDFをドロップダウンメニューに表示する方法を紹介します。このサンプルでは、メニューボタンをクリックするとPDFの一覧が表示され、各項目をクリックすると対応するPDFをiframe内へ表示します。複数のPDFを1つのメニューにまとめられるため、ページ内へPDFを常時並べて表示せず、必要な資料だけを選んで確認できる構成にできます。

マニュアル、商品カタログ、料金表、利用案内など、複数のPDFをWebページから閲覧できるようにしたい場合に利用できます。最初はPDFを閉じた状態で表示し、「PDFメニュー」をクリックすると3つの項目が開きます。「PDF1」「PDF2」「PDF3」の各ボタンをクリックすると、その項目の下へ対応するPDFが表示され、もう一度クリックすると閉じます。

表示するPDFはHTML内のiframeに設定するURLを変更できるため、自分のWebサイトへアップロードしたPDFなどへ差し替えて利用できます。CSSではメニューの横幅、ボタンの色やサイズ、余白、角丸、PDF表示エリアの高さなどを調整できます。画面幅640px以下では余白やPDF表示エリアの高さを変更するレスポンシブ対応も行っているため、スマートフォン・タブレット・PCで利用できます。

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

デモ

「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>

  <!-- ドロップダウンメニュー全体 -->
  <div class="pdf-dropdown-menu_wrap">

    <!-- メインメニューボタン -->
    <button
      class="pdf-dropdown-menu_main-button"
      type="button"
      data-pdf-dropdown-main-button
      aria-expanded="false">

      <!-- メニュー名 -->
      <span>PDFメニュー</span>

      <!-- メインメニューの開閉記号 -->
      <span class="pdf-dropdown-menu_main-arrow">▼</span>

    </button>

    <!-- PDFメニュー一覧。初期状態では非表示 -->
    <div
      class="pdf-dropdown-menu_list"
      data-pdf-dropdown-list
      hidden>

      <!-- 1つ目のPDF項目 -->
      <div class="pdf-dropdown-menu_item">

        <!-- 1つ目のPDFを開閉するボタン -->
        <button
          class="pdf-dropdown-menu_item-button"
          type="button"
          data-pdf-dropdown-item-button
          aria-expanded="false">

          <!-- PDFの表示名 -->
          <span>PDF1</span>

          <!-- PDF項目の開閉記号 -->
          <span class="pdf-dropdown-menu_item-arrow">▼</span>

        </button>

        <!-- 1つ目のPDF表示エリア。初期状態では非表示 -->
        <div
          class="pdf-dropdown-menu_panel"
          data-pdf-dropdown-panel
          hidden>

          <!-- PDF表示領域 -->
          <div class="pdf-dropdown-menu_frame">

            <!--
              【1つ目のPDFファイルを用意してください】

              1. 表示したいPDFファイルを利用者自身で用意してください。
              2. sampleフォルダ内へ pdf フォルダを作成してください。
              3. PDFファイルを sample/pdf/ へ配置してください。
              4. このサンプルでは1つ目のPDFファイル名を sample-1.pdf としています。
              5. 別のファイル名を使用する場合は、下の src も同じファイル名へ変更してください。

              配置例:
              sample/pdf/sample-1.pdf

              HTML:
              src="pdf/sample-1.pdf"
            -->
            <iframe
              src="pdf/sample-1.pdf"
              title="PDF1">
            </iframe>

          </div>

        </div>

      </div>

      <!-- 2つ目のPDF項目 -->
      <div class="pdf-dropdown-menu_item">

        <!-- 2つ目のPDFを開閉するボタン -->
        <button
          class="pdf-dropdown-menu_item-button"
          type="button"
          data-pdf-dropdown-item-button
          aria-expanded="false">

          <!-- PDFの表示名 -->
          <span>PDF2</span>

          <!-- PDF項目の開閉記号 -->
          <span class="pdf-dropdown-menu_item-arrow">▼</span>

        </button>

        <!-- 2つ目のPDF表示エリア。初期状態では非表示 -->
        <div
          class="pdf-dropdown-menu_panel"
          data-pdf-dropdown-panel
          hidden>

          <!-- PDF表示領域 -->
          <div class="pdf-dropdown-menu_frame">

            <!--
              【2つ目のPDFファイルを用意してください】

              1. 2つ目に表示したいPDFファイルを用意してください。
              2. PDFファイルを sample/pdf/ へ配置してください。
              3. このサンプルではファイル名を sample-2.pdf としています。
              4. 別のファイル名を使用する場合は、下の src も同じファイル名へ変更してください。

              配置例:
              sample/pdf/sample-2.pdf
            -->
            <iframe
              src="pdf/sample-2.pdf"
              title="PDF2">
            </iframe>

          </div>

        </div>

      </div>

      <!-- 3つ目のPDF項目 -->
      <div class="pdf-dropdown-menu_item">

        <!-- 3つ目のPDFを開閉するボタン -->
        <button
          class="pdf-dropdown-menu_item-button"
          type="button"
          data-pdf-dropdown-item-button
          aria-expanded="false">

          <!-- PDFの表示名 -->
          <span>PDF3</span>

          <!-- PDF項目の開閉記号 -->
          <span class="pdf-dropdown-menu_item-arrow">▼</span>

        </button>

        <!-- 3つ目のPDF表示エリア。初期状態では非表示 -->
        <div
          class="pdf-dropdown-menu_panel"
          data-pdf-dropdown-panel
          hidden>

          <!-- PDF表示領域 -->
          <div class="pdf-dropdown-menu_frame">

            <!--
              【3つ目のPDFファイルを用意してください】

              1. 3つ目に表示したいPDFファイルを用意してください。
              2. PDFファイルを sample/pdf/ へ配置してください。
              3. このサンプルではファイル名を sample-3.pdf としています。
              4. 別のファイル名を使用する場合は、下の src も同じファイル名へ変更してください。

              配置例:
              sample/pdf/sample-3.pdf
            -->
            <iframe
              src="pdf/sample-3.pdf"
              title="PDF3">
            </iframe>

          </div>

        </div>

      </div>

    </div>

  </div>

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

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

ファイル構成と設置方法

このサンプルは、HTML・CSS・JavaScriptの3ファイルで構成されています。HTMLではPDFメニュー、各PDF項目、PDFを表示するiframeを配置し、CSSではドロップダウンメニューやPDF表示領域の横幅、余白、色、角丸、高さなどを設定します。JavaScriptでは「PDFメニュー」と各PDF項目のクリックを検知し、メニュー一覧やPDF表示エリアの開閉、矢印の切り替えを行います。

表示するPDFファイルはZIPには含まれていません。利用者自身でPDFファイルを用意し、sampleフォルダ内へpdfフォルダを作成して、その中へ配置します。このサンプルでは3つのPDFを表示するため、sample-1.pdf、sample-2.pdf、sample-3.pdfというファイル名を使用しています。

PDFファイルを配置したあとにsample/index.htmlをブラウザで開くと、「PDFメニュー」ボタンが表示されます。ボタンをクリックするとPDF1・PDF2・PDF3の項目が表示され、それぞれをクリックすると対応するPDFがiframe内へ表示されます。もう一度同じ項目をクリックするとPDF表示エリアが閉じます。

sample/
├── index.html
├── style.css
├── script.js
└── pdf/
    ├── sample-1.pdf
    ├── sample-2.pdf
    └── sample-3.pdf

各ファイルの役割
index.htmlはPDFドロップダウンメニュー全体を構成するファイルです。「PDFメニュー」「PDF1」「PDF2」「PDF3」の表示名を変更できます。また、各iframeのsrcに指定するPDFファイル名を変更する場合もindex.htmlを編集します。

style.cssはドロップダウンメニューとPDF表示領域のデザインを設定するファイルです。全体の最大横幅、メインボタンの高さや色、メニュー一覧の余白や影、各PDF項目の文字サイズ、PDF表示領域の高さや角丸などを変更できます。

script.jsはドロップダウンメニューを開閉するファイルです。「PDFメニュー」をクリックするとPDF一覧の表示・非表示を切り替え、PDF1・PDF2・PDF3をクリックすると、それぞれ対応するPDF表示エリアを開閉します。開閉状態に合わせてaria-expandedと「▼」「▲」の矢印も切り替えます。

pdf/sample-1.pdfpdf/sample-2.pdfpdf/sample-3.pdfは、ドロップダウンメニューから表示するPDFファイルです。これらのPDFは利用者自身で用意します。別のファイル名を使用する場合は、index.htmlの各iframeに指定しているsrcも同じファイル名へ変更してください。

設置方法・使い方
sampleフォルダへindex.htmlstyle.cssscript.jsを配置し、その中へpdfフォルダを作成します。次に、表示したい3つのPDFファイルをsample/pdf/へ配置してください。

配布コードでは、1つ目のPDFをpdf/sample-1.pdf、2つ目をpdf/sample-2.pdf、3つ目をpdf/sample-3.pdfとして読み込む設定になっています。そのため、用意したPDFをこの3つのファイル名で保存する場合は、index.htmlを変更する必要はありません。

PDFのファイル名を変更して使用する場合は、index.htmlの各iframeにあるsrcも変更します。たとえば1つ目のPDFをmanual.pdfという名前で配置する場合は、sample/pdf/manual.pdfとして保存し、1つ目のiframeをsrc="pdf/manual.pdf"へ変更してください。PDFの実際のファイル名とsrcに指定する名前は必ず一致させます。

ファイルを配置したらsample/index.htmlをブラウザで開きます。「PDFメニュー」をクリックするとPDF一覧が開き、PDF1・PDF2・PDF3をクリックすると対応するPDFが表示されます。もう一度同じ項目をクリックするとPDF表示エリアが閉じます。

カスタマイズできる内容
index.htmlでは「PDFメニュー」「PDF1」「PDF2」「PDF3」の表示名を変更できます。表示するPDFを変更する場合は、sample/pdf/へ別のPDFファイルを配置し、必要に応じて各iframeのsrcに指定するファイル名を変更してください。各iframeのtitle属性も、表示するPDFの内容に合わせて変更できます。

style.cssでは、メインメニューボタンの背景色#2563eb、文字色#ffffff、メニュー一覧の背景色、枠線、角丸、影などを変更できます。また、PDF表示領域の高さ、枠線、角丸、周囲の余白も調整できます。

script.jsでは、メインメニューと各PDF表示エリアの開閉処理を行っています。クリック時にaria-expandedを切り替え、閉じている状態では「▼」、開いている状態では「▲」を表示します。

数値調整
style.css
padding:40px 20px;
ページ全体の余白です。40pxは上下、20pxは左右の余白を表します。値を大きくすると画面端との間隔が広がります。

max-width:700px;
ドロップダウンメニュー全体の最大横幅です。値を大きくすると横に広がり、小さくするとコンパクトになります。

margin:40px auto;
ドロップダウンメニュー全体の上下余白です。40pxを大きくすると上下の間隔が広がります。autoによって左右中央へ配置されます。

min-height:64px;
メインメニューボタンの最小高さです。値を大きくするとボタンが高くなります。

padding:16px 24px;
メインメニューボタンの内側余白です。16pxは上下、24pxは左右の余白を表します。

border-radius:12px;
メインメニューボタンとPDFメニュー一覧の角丸です。値を大きくすると丸みが強くなり、0にすると四角になります。

font-size:20px;
メインメニューボタンの文字サイズです。値を大きくすると文字が大きくなります。

margin-left:16px;
メニュー名やPDF名と矢印の間隔です。値を大きくすると間隔が広がります。

margin-top:12px;
メインメニューボタンとPDFメニュー一覧の間隔です。値を大きくすると上下の間隔が広がります。

padding:16px;
PDFメニュー一覧の内側余白です。値を大きくすると各項目と外枠の間隔が広がります。

box-shadow:0 10px 24px rgba(15,23,42,.10);
PDFメニュー一覧へ付ける影です。10pxは縦方向の位置、24pxはぼかしの広がりに関係します。値を変更すると影の見え方が変わります。

min-height:58px;
各PDF項目ボタンの最小高さです。値を大きくすると項目が高くなります。

padding:14px 16px;
各PDF項目ボタンの内側余白です。14pxは上下、16pxは左右の余白を表します。

font-size:17px;
PDF1・PDF2・PDF3の文字サイズです。値を大きくすると項目名が大きくなります。

padding:0 16px 18px;
PDF表示エリアの余白です。左右16px、下側18pxの余白を設定しています。値を大きくするとPDFとメニュー外枠との間隔が広がります。

height:500px;
通常時のPDF表示領域の高さです。値を大きくするとPDFを表示する領域が高くなり、小さくすると低くなります。

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

@media (max-width:640px)
画面幅640px以下でスマートフォン向けの表示へ切り替えるブレークポイントです。

height:400px;
画面幅640px以下で使用するPDF表示領域の高さです。値を変更するとスマートフォン表示時のPDF領域の高さが変わります。

レスポンシブ対応
このサンプルはレスポンシブ対応です。style.cssのwidth:100%max-width:700pxによって、ドロップダウンメニュー全体が画面幅に合わせて縮小されます。PDF表示領域内のiframeにもwidth:100%を指定しているため、親要素の横幅に合わせてPDF表示領域も縮小します。

画面幅640px以下では@media (max-width:640px)が適用され、ページ全体の余白を24px 12px、メニュー全体の上下余白を24px、メインボタンの最小高さを58px、文字サイズを18pxへ変更します。また、PDFメニュー一覧やPDF周囲の余白を小さくし、PDF表示領域の高さを500pxから400pxへ変更しています。これにより、スマートフォン・タブレット・PCで利用できます。


こちらもおすすめ


コメント