ウォークスルー Walkthrough

画面の要素をハイライトして順に説明するガイド機能。初回利用時の機能紹介に使用。

使用場面: 新機能のリリース時やユーザーの初回アクセス時に、操作方法を順番に紹介する 採用例: Notion, Figma

ライブデモ

アプリのコンテンツ領域

ステップ 1 / 3
「新規作成」ボタンで新しいドキュメントを作成できます。

ソースコード

<div class="demo-walk-wrapper">
  <div class="demo-walk-app">
    <div class="demo-walk-toolbar">
      <button class="demo-walk-btn" id="walk-target-1">新規作成</button>
      <button class="demo-walk-btn" id="walk-target-2">検索</button>
      <button class="demo-walk-btn" id="walk-target-3">設定</button>
    </div>
    <div class="demo-walk-body">
      <p>アプリのコンテンツ領域</p>
    </div>
  </div>
  <div class="demo-walk-overlay"></div>
  <div class="demo-walk-tooltip">
    <div class="demo-walk-step">ステップ <span class="demo-walk-current">1</span> / 3</div>
    <div class="demo-walk-tooltip-text">「新規作成」ボタンで新しいドキュメントを作成できます。</div>
    <div class="demo-walk-tooltip-actions">
      <button class="demo-walk-skip">スキップ</button>
      <button class="demo-walk-next">次へ</button>
    </div>
  </div>
  <button class="demo-walk-start">ウォークスルーを開始</button>
</div>
.demo-walk-wrapper { position: relative; position: relative; height: 280px; border: 1px solid #e5e7eb; border-radius: 12px; overflow: visible; background: #fff; }
.demo-walk-app { height: 100%; display: flex; flex-direction: column; }
.demo-walk-toolbar {
  display: flex; gap: 8px; padding: 12px 16px; background: #f9fafb;
  border-bottom: 1px solid #e5e7eb;
}
.demo-walk-btn {
  padding: 8px 16px; border: 1px solid #e5e7eb; border-radius: 6px;
  background: #fff; cursor: pointer; font-size: 13px; color: #333;
  transition: all 0.2s; position: relative;
}
.demo-walk-btn.highlighted {
  border-color: var(--ui-primary); z-index: 12;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--ui-primary) 25%, transparent);
}
.demo-walk-body { flex: 1; display: flex; align-items: center; justify-content: center; color: #999; font-size: 14px; }
.demo-walk-overlay {
  position: absolute; inset: 0; background: rgba(0,0,0,0.5);
  opacity: 0; pointer-events: none; transition: opacity 0.3s; z-index: 11;
}
.demo-walk-overlay.active { opacity: 1; pointer-events: auto; }
.demo-walk-tooltip {
  position: absolute; top: 60px; left: 16px;
  background: #fff; border-radius: 10px; padding: 14px 18px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.15); z-index: 13;
  max-width: 260px; display: none;
}
.demo-walk-tooltip.active { display: block; }
.demo-walk-step {
  font-size: 11px; color: var(--ui-primary); font-weight: 600;
  margin-bottom: 6px;
}
.demo-walk-tooltip-text { font-size: 13px; color: #444; line-height: 1.5; margin-bottom: 12px; }
.demo-walk-tooltip-actions { display: flex; justify-content: space-between; }
.demo-walk-skip {
  border: none; background: none; color: #999; font-size: 13px;
  cursor: pointer; padding: 4px 8px;
}
.demo-walk-skip:hover { color: #666; }
.demo-walk-next {
  padding: 6px 18px; border: none; border-radius: 6px;
  background: var(--ui-primary); color: #fff; font-size: 13px;
  font-weight: 600; cursor: pointer; transition: opacity 0.2s;
}
.demo-walk-next:hover { opacity: 0.85; }
.demo-walk-start {
  position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%);
  padding: 10px 24px; border: none; border-radius: 8px;
  background: var(--ui-primary); color: #fff; font-size: 14px;
  font-weight: 600; cursor: pointer; z-index: 5;
  transition: opacity 0.2s;
}
.demo-walk-start:hover { opacity: 0.85; }
.demo-walk-start.hidden { display: none; }
(function(){
  var steps = [
    { target: 'walk-target-1', text: '「新規作成」ボタンで新しいドキュメントを作成できます。', top: 60, left: 16 },
    { target: 'walk-target-2', text: '「検索」で既存のドキュメントをすばやく見つけられます。', top: 60, left: 100 },
    { target: 'walk-target-3', text: '「設定」でアプリのカスタマイズが可能です。', top: 60, left: 180 }
  ];
  var current = 0;
  var overlay = document.querySelector('.demo-walk-overlay');
  var tooltip = document.querySelector('.demo-walk-tooltip');
  var tooltipText = tooltip.querySelector('.demo-walk-tooltip-text');
  var currentEl = tooltip.querySelector('.demo-walk-current');
  var nextBtn = tooltip.querySelector('.demo-walk-next');
  var skipBtn = tooltip.querySelector('.demo-walk-skip');
  var startBtn = document.querySelector('.demo-walk-start');
  function showStep(idx){
    document.querySelectorAll('.demo-walk-btn').forEach(function(b){ b.classList.remove('highlighted'); });
    var step = steps[idx];
    document.getElementById(step.target).classList.add('highlighted');
    tooltipText.textContent = step.text;
    currentEl.textContent = idx + 1;
    tooltip.style.top = step.top + 'px';
    tooltip.style.left = step.left + 'px';
    nextBtn.textContent = idx === steps.length - 1 ? '完了' : '次へ';
  }
  function start(){
    current = 0;
    overlay.classList.add('active');
    tooltip.classList.add('active');
    startBtn.classList.add('hidden');
    showStep(0);
  }
  function end(){
    overlay.classList.remove('active');
    tooltip.classList.remove('active');
    startBtn.classList.remove('hidden');
    document.querySelectorAll('.demo-walk-btn').forEach(function(b){ b.classList.remove('highlighted'); });
  }
  startBtn.addEventListener('click', start);
  skipBtn.addEventListener('click', end);
  nextBtn.addEventListener('click', function(){
    current++;
    if(current >= steps.length){ end(); }
    else { showStep(current); }
  });
})();

AIプロンプト

Basic
ウォークスルーをHTML/CSS/JSで作ってください。画面上の要素を順番にハイライトし、説明テキストをツールチップで表示します。
Custom
以下の仕様でウォークスルーを実装してください。
- 3ステップのチュートリアル
- ターゲット要素のハイライト(他はオーバーレイで暗くする)
- ステップ数表示(1/3 形式)
- 次へ/スキップボタン
- プライマリカラー: #2563eb
- 最後のステップで「完了」ボタン
Advanced
高機能なウォークスルーを実装してください。
- 動的にターゲット要素の位置を検出(ResizeObserver)
- ツールチップの自動配置(要素の上下左右を判定)
- キーボード対応(矢印キーでステップ移動、ESCでスキップ)
- 進捗状態のlocalStorage保存(途中再開可能)
- ステップ間のスムーズスクロール
- prefers-reduced-motion対応
- コールバック機能(各ステップでカスタム処理を実行)