月影

日々の雑感

【コピペで簡単】HTML「折りたたみ」「ページ内リンク」の実装方法

 

読者のためのユーザビリティ向上術!HTMLで実装する「折りたたみ」と「ページ内リンク」

ブログを運営している皆さん、こんにちは!

「記事が長くなってしまって、読者が読みたい情報を見つけにくいかも…」

「Q&A形式のコンテンツを、もっとスッキリ見せたい!」

そんなお悩みはありませんか?

今回は、HTMLコードを少し追加するだけで、ブログの利便性をぐっと向上させる2つの基本的なテクニック、「折りたたみ(アコーディオン)」「ページ内リンク(アンカーリンク)」をご紹介します。プログラミングの知識がなくても大丈夫。コードをコピーして貼り付けるだけで、すぐにご自身のブログで試せます!


1. クリックで開閉!コンテンツを「折りたたみ」にする方法

長い文章や補足情報、Q&Aなどをスッキリと見せたいときに便利なのが「折りたたみ」機能です。最初は見出しだけが見えていて、クリックすると詳細な内容が表示されるアレです。

現在、この機能を実装する最も簡単で推奨されている方法は、HTMLの<details>タグと<summary>タグを使うことです。JavaScriptは不要です!

サンプルコード

まずは完成形を見てみましょう。このコードをそのままブログのHTML編集画面に貼り付けてみてください。

<!-- 見た目を整えるためのCSS(デザイン) -->
<style>
  /* 折りたたみ要素全体のデザイン */
  .custom-details {
    border: 1px solid #ccc;
    border-radius: 8px;
    margin-bottom: 1em; /* 要素間の余白 */
    background-color: #f9f9f9;
  }

  /* クリックする見出し部分のデザイン */
  .custom-details summary {
    font-weight: bold;
    padding: 1em;
    cursor: pointer;
    position: relative;
    padding-left: 2.5em; /* アイコン用のスペース */
  }

  /* ブラウザ標準の▶マーカーを消す */
  .custom-details summary::-webkit-details-marker,
  .custom-details summary::marker {
    display: none;
  }
  
  /* 「+」アイコンをCSSで作成 */
  .custom-details summary::before {
    content: "+";
    font-size: 1.5em;
    color: #3498db;
    position: absolute;
    left: 0.8em;
    top: 50%;
    transform: translateY(-50%);
    transition: transform 0.2s; /* アニメーション効果 */
  }

  /* 開いたときに「+」を「-」に変える */
  .custom-details[open] > summary::before {
    content: "-";
  }

  /* 折りたたまれている文章部分のデザイン */
  .custom-details .details-content {
    padding: 0 1.5em 1.5em 1.5em;
    border-top: 1px solid #eee;
  }
</style>

<!-- ここからがHTML本体です -->
<details class="custom-details">
  <summary>
    ここをクリックすると詳細が開きます(見出し)
  </summary>
  <div class="details-content">
    <p>
      ここに折りたたみたい文章を入力します。
    </p>
    <p>
      段落を分けたり、画像を入れたりすることも可能です。<br>
      この部分は、普段は隠れていて、上の見出しをクリックしたときにだけ表示されます。
    </p>
  </div>
</details>

<details class="custom-details">
  <summary>
    Q&Aなど、複数設置することもできます
  </summary>
  <div class="details-content">
    <p>
      必要な数だけ、この<code>&lt;details&gt;</code>ブロック全体をコピーして使ってください。
    </p>
  </div>
</details>

コードの解説と使い方

  • <details>: 折りたたみ要素全体を囲むタグです。この中に見出しと詳細内容を入れます。
  • <summary>: 常に表示される見出し部分です。このタグに書いたテキストがクリックする場所になります。
  • <div class="details-content">: 折りたたんで隠しておきたい文章や画像など、詳細なコンテンツをこの中に入れます。
  • <style>: 見た目を整えるためのCSSです。アイコンを「+」や「-」にしたり、枠線をつけたりしています。デザインが不要な場合は<style>部分は削除しても機能します。

カスタマイズ方法は簡単です。<summary>タグの中のテキストをあなたの好きな見出しに、<div class="details-content">の中身を表示したい文章や画像に書き換えるだけです。

追記 HTMLの<details>タグに open という属性を追加するかどうかで、デフォルトの開閉状態を簡単に制御できます。最初から開いておく → <details open> 最初から閉じておく → <details>


2. ページ内の特定箇所へひとっ飛び!「ページ内リンク」の作り方

記事が長くなったとき、冒頭に目次を置いて、クリックすると目的の章にジャンプできるようにすると、読者は非常に助かります。これが「ページ内リンク」です。

仕組みは「移動元」と「移動先」の2つを設定するだけです。

サンプルコード

移動元(クリックするリンク)

まず、目次など、クリックする側のリンクを用意します。href属性に#から始まる名前(ID)を指定します。

<!-- 目次の例 -->
<ul>
  <li><a href="#section1">1. 最初の見出しへ</a></li>
  <li><a href="#section2">2. 次の見出しへ</a></li>
  <li><a href="#qa">3. Q&Aコーナーへ</a></li>
</ul>
移動先(ジャンプしてくる場所)

次に、ジャンプ先の見出しや段落に、移動元で設定した#の後の名前と同じidを付けます。

<!-- ジャンプ先の例 -->
<h3 id="section1">1. 最初の見出し</h3>
<p>ここが最初のセクションの内容です。</p>
<p>...</p>

<h3 id="section2">2. 次の見出し</h3>
<p>ここが次のセクションの内容です。</p>
<p>...</p>

<h3 id="qa">3. Q&Aコーナー</h3>
<p>ここがQ&Aコーナーの内容です。</p>
<p>...</p>

使い方のポイント

  1. 移動元のhref="#名前"移動先のid="名前"は、半角英数字で完全に一致させてください。
  2. idは、1ページ内で同じ名前を複数使うことはできません。必ずユニークな(唯一の)名前を付けてください。
  3. 見出しタグ(h2, h3)だけでなく、段落タグ(p)など、ほとんどのHTMLタグにidを付けることができます。

【第1回】は以上です。これらのテクニックを使えば、読者が情報を探しやすく、ストレスなく記事を読み進められるようになります。ぜひあなたのブログにも取り入れてみてください!

次回は、【第2回】コンテンツを豊かにする「音声読み上げ」と「外部リンク」の実装方法をお届けします。お楽しみに!

www.namuamidabu.com