生成AI活用

AIでページ内リンクをスムーススクロールにする【CSS+JS生成】

更新日:2026-05-10 著者:unigram 読了目安:2分

この記事の要点

AIでページ内リンクをスムーススクロールにする方法。固定ヘッダーのオフセット調整まで含めたCSS+JSのプロンプト例・コードを初心者向けに解説します。

目次リンクをクリックした際にピョンと飛ぶのではなく、なめらかにスクロールするUI。固定ヘッダーがある場合のオフセット調整もAIに任せられます。

方法①:既存のHTMLからCSS・JSを生成する

AIへのプロンプト例

以下の目次HTMLに対して、リンクをクリックすると対象セクションへ
スムーススクロールするJavaScriptを書いてください。
固定ヘッダーの高さが80pxあるため、80px分上にオフセットしてください。

<nav class="toc">
  <ul>
    <li><a href="#section1">セクション1</a></li>
    <li><a href="#section2">セクション2</a></li>
    <li><a href="#section3">セクション3</a></li>
  </ul>
</nav>

生成されたCSS例

html {
  scroll-behavior: smooth;
}
/* ターゲットセクションに余白を追加する方法 */
:target {
  scroll-margin-top: 88px; /* ヘッダー高さ+余白 */
}

生成されたJS例

document.querySelectorAll('a[href^="#"]').forEach(link => {
  link.addEventListener('click', e => {
    const targetId = link.getAttribute('href');
    if (targetId === '#') return;
    const target = document.querySelector(targetId);
    if (!target) return;

    e.preventDefault();
    const headerH = 80; // 固定ヘッダーの高さ
    const top = target.getBoundingClientRect().top + window.scrollY - headerH;
    window.scrollTo({ top, behavior: 'smooth' });
  });
});

📝 用語メモ

scroll-margin-top:スクロール先の要素に余白を設ける新しいCSSプロパティ。固定ヘッダーに隠れないように使います。
getBoundingClientRect():要素の画面上での位置(top/leftなど)を取得するJSのメソッドです。

方法②:HTMLとセットで生成する

AIへのプロンプト例

固定ヘッダー(高さ72px)+目次つきのページをHTML・CSS・JavaScriptで作ってください。
目次のリンクをクリックすると、固定ヘッダーに隠れずになめらかにスクロールする実装で。
現在表示中のセクションに対応する目次項目をハイライトする機能も追加してください。

ポイント

  • CSSだけならscroll-behavior: smoothhtmlに指定するだけで動きます(ただしオフセット調整が必要な場合はJSが必要)
  • ヘッダー高さが可変の場合は「ヘッダーの実際の高さを動的に取得して」とAIに伝えましょう

この記事を書いた人

unigram
web、印刷、映像などの制作をしています。@京都、フリーランス18年目。 大学で講師もしています。 自身の備忘録も兼ねて、Web制作・WordPress・SEO・GA4・生成AI活用をテーマに情報発信しています。わかりやすく優しい内容で記事作成を心がけています。