<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UX改善 | ペガブロ</title>
	<atom:link href="https://pegasus-note.com/tag/ux%E6%94%B9%E5%96%84/feed/" rel="self" type="application/rss+xml" />
	<link>https://pegasus-note.com</link>
	<description></description>
	<lastBuildDate>Thu, 16 Apr 2026 08:14:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://pegasus-note.com/wp-content/uploads/2026/03/pegaicon-150x150.png</url>
	<title>UX改善 | ペガブロ</title>
	<link>https://pegasus-note.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Cocoonでサイドバー目次を「現在地ハイライト＋自動追従」にする方法【長文記事対策】</title>
		<link>https://pegasus-note.com/cocoon-toc-scroll-highlight/</link>
					<comments>https://pegasus-note.com/cocoon-toc-scroll-highlight/#respond</comments>
		
		<dc:creator><![CDATA[hitopega]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 08:07:34 +0000</pubDate>
				<category><![CDATA[ブログ運営メモ]]></category>
		<category><![CDATA[Cocoon]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[UX改善]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[エックスサーバー]]></category>
		<category><![CDATA[カスタマイズ]]></category>
		<category><![CDATA[サイドバー]]></category>
		<category><![CDATA[目次]]></category>
		<category><![CDATA[長文記事]]></category>
		<guid isPermaLink="false">https://pegasus-note.com/?p=192</guid>

					<description><![CDATA[Cocoon カスタマイズ Cocoonでサイドバー目次を「現在地ハイライト＋自動追従」にする方法【長文記事対策】 長文記事で「今どこを読んでいるかわからない」という読者のストレスを解消する方法です。サイドバー目次に現在 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<section class="article-hero">
  <p class="article-hero__label">Cocoon カスタマイズ</p>
  <p class="article-hero__title">Cocoonでサイドバー目次を「現在地ハイライト＋自動追従」にする方法【長文記事対策】</p>
  <p class="article-hero__lead">長文記事で「今どこを読んでいるかわからない」という読者のストレスを解消する方法です。サイドバー目次に現在地ハイライトと自動スクロール追従を追加することで、離脱を防ぎ読者体験を大幅に改善できます。エックスサーバー × WordPress × Cocoonの環境で実装した手順をそのまま公開します。</p>
  <div class="summary-box">
    <p class="summary-box__title">この記事でわかること</p>
    <ul>
      <li><strong>現在地ハイライト＋自動追従の実装</strong> → 4ステップのコピペ作業で完結</li>
      <li><strong>CSS追加</strong> → 追加CSSに貼るだけでOK</li>
      <li><strong>JSの設置場所</strong> → footer.phpの正しい位置に追記</li>
    </ul>
  </div>
</section>

<div class="link-box">
  <p class="link-box__title">あわせて読みたい</p>
  <ul>
    <li><a href="https://pegasus-note.com/cocoon-first-design-settings/">Cocoonで最初に触った4つのデザイン設定</a></li>
    <li><a href="https://pegasus-note.com/xserver-serverpanel-full-review/">【初心者向け】Xserver新サーバーパネル全機能レビュー｜何ができるか全部触って調べた</a></li>
  </ul>
</div>

<section class="content-section">
  <h2><span id="toc1">実装するとどうなる？</span></h2>
  <p class="lead-answer"><strong>読んでいるセクションが目次でリアルタイムにハイライトされ、目次が長くても自動でスクロール追従します。</strong></p>
  <p>長文記事の読者が感じるストレスの多くは、「今どこを読んでいるのか」「あとどれくらい残っているのか」という現在地の見えなさにあります。<br>現在地が可視化されると、読者は安心して読み進めやすくなり、離脱率の低下にもつながります。</p>
  <div class="check-card">
    <h3><span id="toc2">&#x2705; 実装後に変わること</span></h3>
    <ul>
      <li>読んでいるセクションの目次項目がハイライト表示される</li>
      <li>目次が長い場合、アクティブ項目が常に表示範囲内に入るよう自動追従する</li>
      <li>読者が「今どこにいるか」を常に把握できる</li>
    </ul>
  </div>
  <p>実装はコードのコピペが中心です。難しい作業はありませんが、テーマファイルを編集するため、<strong>必ず事前にバックアップを取ってから</strong>進めてください。</p>

  <figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio">
    <div class="wp-block-embed__wrapper">
      <iframe title="Cocoonでサイドバー目次を「現在地ハイライト＋自動追従」にする方法" width="1256" height="942" src="https://www.youtube.com/embed/lN3DK_0I2Is?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
    </div>
  </figure>
</section>

<section class="content-section">
  <h2><span id="toc3">手順の全体像（ざっくり）</span></h2>
  <p class="lead-answer"><strong>作業は4ステップ。コードはすべてコピペで完結します。</strong></p>
  <div class="check-card">
    <h3><span id="toc4">&#x1f4cb; 全体手順</span></h3>
    <ol>
      <li>サイドバーに目次ウィジェットを設置</li>
      <li>追加CSSを設定する</li>
      <li>Cocoon本体のfooter.phpを子テーマへコピー</li>
      <li>footer.phpにJSを追加する</li>
    </ol>
  </div>
  <p>それでは各ステップを詳しく解説します。</p>
</section>

<section class="content-section">
  <h2><span id="toc5">① サイドバーに目次を追加する</span></h2>
  <p class="lead-answer"><strong>WordPress管理画面の「外観 → ウィジェット」から、目次ウィジェットをサイドバーに追加します。</strong></p>
  <p>「サイドバースクロール追従」エリアに<strong>目次ウィジェット</strong>を追加してください。</p>

  <figure class="wp-block-image size-large">
    <img decoding="async" src="https://pegasus-note.com/wp-content/uploads/2026/02/image-17-1024x447.png" alt="サイドバーに目次ウィジェットを追加する画面" />
  </figure>

  <div class="warning-box">
    <p><strong>注意：</strong>Cocoonの大元設定と目次の表示深さを揃えてください。たとえば大元でh3まで表示する設定にしているのに、ウィジェット側でh2までにするとミスマッチが起き、ハイライトが正しく動作しません。</p>
  </div>
</section>

<section class="content-section">
  <h2><span id="toc6">② 追加CSSを設定する</span></h2>
  <p class="lead-answer"><strong>WordPress管理画面の「外観 → カスタマイズ → 追加CSS」に以下のコードを貼り付けます。</strong></p>

  <figure class="wp-block-image size-large">
    <img decoding="async" src="https://pegasus-note.com/wp-content/uploads/2026/02/image-20-1024x496.png" alt="追加CSSの設定画面" />
  </figure>

  <p>目次が長い場合もスクロールできるようにするCSSです。アクティブ項目は青い左ボーダーとハイライト背景で強調されます。</p>

<pre><code>#sidebar-scroll .widget.widget_toc .toc-content{
  max-height: 55vh;
  overflow: auto;
}
#sidebar-scroll .widget.widget_toc a{
  display: block;
  padding: 6px 0 6px 12px;
  text-decoration: none;
  border-left: 3px solid transparent;
  transition: background .2s ease, border-color .2s ease;
}
#sidebar-scroll .widget.widget_toc a.is-active{
  background: rgba(59,130,246,0.12);
  border-left: 3px solid #3b82f6;
  font-weight: 600;
}</code></pre>

  <div class="point-box">
    <p><strong>結論：</strong>CSSはここまでで完結です。見た目の調整はこのコードだけで対応できます。</p>
  </div>
</section>

<section class="content-section">
  <h2><span id="toc7">③ Cocoon本体のfooter.phpを子テーマへコピーする</span></h2>
  <p class="lead-answer"><strong>子テーマ側にfooter.phpがない場合は、Cocoon本体からコピーして追加します。</strong></p>
  <p>テーマ本体を直接編集するとアップデート時に上書きされます。必ず子テーマに追加してください。</p>

  <div class="warning-box">
    <p><strong>注意：</strong>すでに子テーマ側にfooter.phpがある場合、またはJSを追記できるファイルがある場合はこの手順をスキップして④へ進んでください。</p>
  </div>

  <div class="check-card">
    <h3><span id="toc8">&#x2699;&#xfe0f; エックスサーバーでの作業手順</span></h3>
    <figure class="wp-block-image size-large">
      <img decoding="async" src="https://pegasus-note.com/wp-content/uploads/2026/02/image-21-1024x411.png" alt="エックスサーバーのファイルマネージャ画面" />
    </figure>
    <ol>
      <li>エックスサーバーにログインしてサーバーパネルを開く</li>
      <li>ファイルマネージャから該当ドメインを開く</li>
      <li><code>/public_html/wp-content/themes/cocoon-master/footer.php</code> をコピー</li>
      <li><code>/public_html/wp-content/themes/cocoon-child-master/footer.php</code> として貼り付け</li>
    </ol>
  </div>

  <div class="link-box">
    <p class="link-box__title">エックスサーバーの操作に不安がある方へ</p>
    <ul>
      <li><a href="https://pegasus-note.com/xserver-serverpanel-full-review/">【初心者向け】Xserver新サーバーパネル全機能レビュー｜何ができるか全部触って調べた</a></li>
    </ul>
  </div>
</section>

<section class="content-section">
  <h2><span id="toc9">④ footer.phpにJSを追加する</span></h2>
  <p class="lead-answer"><strong>WordPress管理画面の「外観 → テーマファイルエディター → Theme Footer（footer.php）」を開き、<code>&lt;/div&gt;&lt;!-- #container --&gt;</code>の直前に以下のJSコードを追加します。</strong></p>

  <figure class="wp-block-image size-full">
    <img decoding="async" src="https://pegasus-note.com/wp-content/uploads/2026/02/image-22.png" alt="footer.phpへのJS追記位置" />
  </figure>

  <h3><span id="toc10">追加するJSコード</span></h3>

<pre><code>&lt;script&gt;
document.addEventListener("DOMContentLoaded", () =&gt; {
  const toc = document.querySelector("#sidebar-scroll .widget.widget_toc");
  if (!toc) return;

  const tocScroll = toc.querySelector(".toc-content") || toc;
  const links = Array.from(toc.querySelectorAll('a[href^="#"]'))
    .filter(a =&gt; a.getAttribute("href").length &gt; 1);

  const items = links.map(a =&gt; {
    const id = decodeURIComponent(a.getAttribute("href").slice(1));
    const el = document.getElementById(id);
    return el ? { id, el, a } : null;
  }).filter(Boolean);

  if (!items.length) return;

  const OFFSET = 160;
  let currentId = null;

  function clearActive(){
    links.forEach(a =&gt; a.classList.remove("is-active"));
  }

  function keepActiveVisible(activeLink){
    if (tocScroll.scrollHeight &lt;= tocScroll.clientHeight) return;
    const cRect = tocScroll.getBoundingClientRect();
    const aRect = activeLink.getBoundingClientRect();
    const padding = 14;
    if (aRect.top &lt; cRect.top + padding ||
        aRect.bottom &gt; cRect.bottom - padding) {
      activeLink.scrollIntoView({
        block: "center",
        inline: "nearest",
        behavior: "smooth"
      });
    }
  }

  function setActive(id){
    if (id === currentId) return;
    currentId = id;
    clearActive();
    const hit = items.find(x =&gt; x.id === id);
    if (!hit) return;
    hit.a.classList.add("is-active");
    keepActiveVisible(hit.a);
  }

  function update(){
    let candidate = items[0];
    for (const it of items) {
      const top = it.el.getBoundingClientRect().top;
      if (top &lt;= OFFSET) candidate = it;
      else break;
    }
    setActive(candidate.id);
  }

  let ticking = false;
  function onScroll(){
    if (ticking) return;
    ticking = true;
    requestAnimationFrame(() =&gt; {
      update();
      ticking = false;
    });
  }

  window.addEventListener("scroll", onScroll, { passive: true });
  window.addEventListener("resize", onScroll, { passive: true });
  window.addEventListener("load", onScroll);
  update();
});
&lt;/script&gt;</code></pre>

  <h3><span id="toc11">固定ヘッダーがある場合の調整</span></h3>
  <p>固定ヘッダーがある環境では、本文の表示タイミングとハイライトのタイミングがずれることがあります。その場合は以下の数値を調整してください。一般的な固定ヘッダーなら240前後が目安です。</p>
<pre><code>const OFFSET = 160;</code></pre>

  <div class="point-box">
    <p><strong>結論：</strong>ここまでで実装は完了です。ページを読み込んでスクロールし、目次のハイライトが動いていれば成功です。</p>
  </div>
</section>

<section class="content-section">
  <h2><span id="toc12">なぜこの実装が重要なのか？</span></h2>
  <p class="lead-answer"><strong>長文記事で離脱が増える最大の原因は「現在地が見えないこと」です。それを解消するのがこの実装です。</strong></p>
  <p>5,000〜1万文字の記事は情報量で価値を出せますが、読者にとっては読むこと自体が負荷です。<br>「今どこにいるかわからない」「終わりが見えない」というストレスが重なると、離脱率は確実に上がります。</p>
  <p>現在地が可視化されると以下の変化が起きます。</p>
  <div class="check-card">
    <h3><span id="toc13">&#x1f4c8; 期待できる効果</span></h3>
    <ul>
      <li>読者が安心して読み進められる</li>
      <li>「あとこれだけ」が見えることで読了率が上がる</li>
      <li>離脱が減り、UX向上がSEOにも好影響をもたらす</li>
    </ul>
  </div>
  <p>長文コンテンツを書くブログほど、この改善の効果は大きくなります。</p>

  <div class="link-box">
    <p class="link-box__title">サイト改善の次のステップ</p>
    <ul>
      <li><a href="https://pegasus-note.com/ga4-initial-setup/">GA4を使う前にやっておきたい最低限の初期設定</a></li>
      <li><a href="https://pegasus-note.com/search-console-registration-trouble/">Search Console登録で手が止まったポイントを整理する</a></li>
    </ul>
  </div>
</section>

<section class="faq-section">
  <h2><span id="toc14">よくある質問</span></h2>
  <details class="faq-item">
    <summary>Q　子テーマがない場合はどうすればいいですか？</summary>
    <div class="faq-answer">
      <p>子テーマなしにCocoon本体のfooter.phpを直接編集すると、テーマアップデート時に変更内容が上書きされます。必ずCocoon Child（子テーマ）を有効化してから作業してください。子テーマはCocoon公式サイトで配布されています。</p>
    </div>
  </details>
  <details class="faq-item">
    <summary>Q　ハイライトが動作しない場合の確認ポイントは？</summary>
    <div class="faq-answer">
      <p>最も多い原因はCocoon大元設定とウィジェットの目次表示深さのミスマッチです。たとえば大元でh3まで表示している場合は、ウィジェット側も同じ設定にしてください。また、JSがfooter.phpの正しい位置（<code>&lt;/div&gt;&lt;!-- #container --&gt;</code>の直前）に追記されているかも確認してください。</p>
    </div>
  </details>
  <details class="faq-item">
    <summary>Q　固定ヘッダーがある場合の調整方法は？</summary>
    <div class="faq-answer">
      <p>JSコード内の<code>const OFFSET = 160;</code>の数値を変更してください。固定ヘッダーの高さに合わせて200〜240程度に増やすと、ハイライトのタイミングが本文表示と合いやすくなります。</p>
    </div>
  </details>
  <details class="faq-item">
    <summary>Q　Cocoon以外のテーマでも使えますか？</summary>
    <div class="faq-answer">
      <p>JSとCSSはCocoon専用のクラス名（<code>widget_toc</code>など）を参照しているため、他テーマでは目次ウィジェットのHTML構造に合わせてセレクタを書き換える必要があります。汎用性はありますが、そのままのコピペでは動作しない場合があります。</p>
    </div>
  </details>
</section>

<section class="summary-section">
  <h2><span id="toc15">まとめ｜4ステップで「現在地が見える目次」を実装できる</span></h2>
  <p>今回やったことは4つです。ウィジェットの設置、CSS追加、footer.phpの子テーマへのコピー、JSの追記。コードはすべてコピペで完結するため、初心者でも作業できます。</p>
  <div class="final-box">
    <p><strong>最終結論：</strong></p>
    <p><strong>長文記事を書くブログほど、この改善の効果は大きい。</strong><br><strong>読者の「今どこ？」を解消するのが、離脱対策の第一歩です。</strong></p>
  </div>
  <p>なお、この記事はエックスサーバー上での手順を前提にしています。サーバーパネルの操作に慣れていない方は、先にパネルの全体像を把握しておくとスムーズです。</p>


<div class="cta-box">
  <p class="cta-box__lead">エックスサーバーはWordPressとの相性が良く、ファイルマネージャも使いやすい国内人気No.1のレンタルサーバーです。今ならキャンペーン中につき通常より割引で始められます。</p>
  <a rel="nofollow" href="https://px.a8.net/svt/ejp?a8mat=35HN36+5XQSCQ+CO4+609HU">エックスサーバーの公式サイトを見る</a>
  <img decoding="async" border="0" width="1" height="1" src="https://www12.a8.net/0.gif?a8mat=35HN36+5XQSCQ+CO4+609HU" alt="">
</div>


  <div class="link-box">
    <p class="link-box__title">エックスサーバーをこれから始める方へ</p>
    <ul>
      <li><a href="https://pegasus-note.com/xserver-summary/">エックスサーバーまとめ｜評判・料金・デメリット・始め方を1ページで整理</a></li>
      <li><a href="https://pegasus-note.com/xserver-start/">エックスサーバーの始め方｜初心者でも10分でWordPressブログを開設する方法【2026年版】</a></li>
    </ul>
  </div>
</section>
]]></content:encoded>
					
					<wfw:commentRss>https://pegasus-note.com/cocoon-toc-scroll-highlight/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
