← 動的パーツギャラリーへ戻る

パーツ番号 06-09-04 ・ JavaScript使用

クリックでジャンプするミニ目次

タブ形式の目次をクリックすると、内部プレビュー領域がなめらかに該当見出しへスクロールします。WordPressの見出しジャンプ目次に。クリックで動作します。

scrollclickjs

プレビュー

ソースコード

HTML

<div class="d06-09-04-wrap">
          <nav class="d06-09-04-toc">
            <a href="#" data-t="s06-09-04-1">はじめに</a>
            <a href="#" data-t="s06-09-04-2">背景</a>
            <a href="#" data-t="s06-09-04-3">手順</a>
            <a href="#" data-t="s06-09-04-4">まとめ</a>
          </nav>
          <div class="d06-09-04-body">
            <section id="s06-09-04-1"><h4>はじめに</h4><p>上のタブをクリックすると、該当の見出しまで内部プレビューがなめらかにジャンプします。</p></section>
            <section id="s06-09-04-2"><h4>背景</h4><p>長文記事ではページ内リンクによる移動が読者の負担を大きく減らします。</p></section>
            <section id="s06-09-04-3"><h4>手順</h4><p>クリックされたリンクのターゲットIDから対象の見出し位置を計算し、スクロール位置を更新します。</p></section>
            <section id="s06-09-04-4"><h4>まとめ</h4><p>クリック一つで狙った場所へ移動できる、シンプルで実用的なジャンプ目次です。</p></section>
          </div>
        </div>

CSS

.prev.d06-09-04{padding:0;display:block}
        .d06-09-04-wrap{height:260px;display:flex;flex-direction:column}
        .d06-09-04-toc{flex:0 0 auto;display:flex;gap:6px;padding:14px 14px 10px;overflow-x:auto}
        .d06-09-04-toc a{flex:none;font-size:11px;font-weight:700;color:#5b3df0;background:#eceaff;padding:6px 12px;border-radius:16px;text-decoration:none;transition:.2s}
        .d06-09-04-toc a:hover,.d06-09-04-toc a.is-active{background:#5b3df0;color:#fff}
        .d06-09-04-body{flex:1;overflow-y:auto;padding:6px 18px 16px;scroll-behavior:smooth}
        .d06-09-04-body section{padding:8px 0 16px;border-bottom:1px dashed #eef0f5}
        .d06-09-04-body h4{margin:0 0 6px;font-size:13px;color:#242a3d}
        .d06-09-04-body p{margin:0;font-size:12px;color:#666c80;line-height:1.7}

JavaScript

(function(){
        var root=document.getElementById('item-06-09-04');if(!root)return;
        var body=root.querySelector('.d06-09-04-body');
        var links=root.querySelectorAll('.d06-09-04-toc a');
        links.forEach(function(a){
          a.addEventListener('click',function(e){
            e.preventDefault();
            var t=root.querySelector('#'+a.getAttribute('data-t'));
            if(t){body.scrollTop=t.offsetTop-body.offsetTop-6;}
            links.forEach(function(x){x.classList.remove('is-active');});
            a.classList.add('is-active');
          });
        });
      })();

クラス名 .d06-09-04 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。