生成AI活用

AIでスクロール固定エリア内に展開するコンテンツを作る【CSS+JS生成】

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

この記事の要点

AIでスクロール固定サイドバー内のアコーディオンUIを生成する方法。position:stickyと開閉アニメーションのCSS+JSをプロンプト例・コード付きで解説します。

サイドバーが画面に固定されながら、その中のメニューをクリックすると展開するUI。複雑そうに見えますが、AIへの指示を整理すれば一発で生成できます。

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

AIへのプロンプト例

以下のHTMLに対して、
・.sidebar がスクロールしても画面上部に固定されるCSS(position: sticky)
・.accordion-item のタイトルをクリックすると本文が開閉するJavaScript
を追加してください。アニメーションはなめらかに。

<aside class="sidebar">
  <div class="accordion-item">
    <button class="accordion-title">セクション1</button>
    <div class="accordion-body"><p>内容1</p></div>
  </div>
  <div class="accordion-item">
    <button class="accordion-title">セクション2</button>
    <div class="accordion-body"><p>内容2</p></div>
  </div>
</aside>

生成されたCSS例

.sidebar {
  position: sticky;
  top: 24px;
  align-self: flex-start;
  width: 260px;
  background: #fff;
  border: 1px solid #e8e8e8;
  border-radius: 8px;
  padding: 16px;
}
.accordion-title {
  width: 100%;
  background: none;
  border: none;
  text-align: left;
  font-size: 0.95rem;
  font-weight: 600;
  padding: 10px 8px;
  cursor: pointer;
  color: #1a1a1a;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.accordion-title::after {
  content: '+';
  font-size: 1rem;
  transition: transform 0.3s;
}
.accordion-item.open .accordion-title::after {
  transform: rotate(45deg);
}
.accordion-body {
  overflow: hidden;
  max-height: 0;
  transition: max-height 0.35s ease, padding 0.3s;
  padding: 0 8px;
}
.accordion-item.open .accordion-body {
  max-height: 400px;
  padding: 0 8px 12px;
}

生成されたJS例

document.querySelectorAll('.accordion-title').forEach(btn => {
  btn.addEventListener('click', () => {
    const item = btn.closest('.accordion-item');
    item.classList.toggle('open');
  });
});

📝 用語メモ

position: sticky:通常のスクロールに従いながら、指定した位置(ここでは上から24px)に達したら固定されるCSSの指定です。
max-heightでのアニメーション:height: autoはアニメーションできないため、大きな数値のmax-heightを使ってなめらかな展開を表現するテクニックです。

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

AIへのプロンプト例

スクロールしても固定されるサイドバーの中に、アコーディオンメニューを配置したUIを
HTML・CSS・JavaScriptでまとめて作ってください。
・サイドバーは画面左側に配置、メインコンテンツは右側
・アコーディオンは複数項目、クリックで開閉
・開いた項目のタイトル色を変える

ポイント

  • position: stickyが効くには、親要素にoverflow: hiddenがないか確認しましょう(効かなくなります)
  • 「同時に1つだけ開く」仕様にしたい場合は、その旨をAIに伝えると対応コードを生成してくれます

この記事を書いた人

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