タグ・チップ Tag / Chip

カテゴリやステータスを小さなラベルで表示する。フィルタ選択やタグ付けに使用。

使用場面: 記事のカテゴリタグ、選択済みフィルタの表示、スキルタグなどの場面 採用例: Qiita, Stack Overflow

ライブデモ

カテゴリ
フロントエンド バックエンド デザイン インフラ
スキルタグ
React TypeScript Node.js
ステータス
● 公開中 ● レビュー中 ● 非公開

ソースコード

<div class="demo-chips">
  <div class="demo-chips-section">
    <div class="demo-chips-label">カテゴリ</div>
    <div class="demo-chips-row">
      <span class="demo-chip active">フロントエンド</span>
      <span class="demo-chip">バックエンド</span>
      <span class="demo-chip">デザイン</span>
      <span class="demo-chip">インフラ</span>
    </div>
  </div>
  <div class="demo-chips-section">
    <div class="demo-chips-label">スキルタグ</div>
    <div class="demo-chips-row">
      <span class="demo-chip removable">React <button class="demo-chip-remove" aria-label="削除">&times;</button></span>
      <span class="demo-chip removable">TypeScript <button class="demo-chip-remove" aria-label="削除">&times;</button></span>
      <span class="demo-chip removable">Node.js <button class="demo-chip-remove" aria-label="削除">&times;</button></span>
    </div>
  </div>
  <div class="demo-chips-section">
    <div class="demo-chips-label">ステータス</div>
    <div class="demo-chips-row">
      <span class="demo-chip status-success">&#9679; 公開中</span>
      <span class="demo-chip status-warning">&#9679; レビュー中</span>
      <span class="demo-chip status-error">&#9679; 非公開</span>
    </div>
  </div>
</div>
.demo-chips { display: flex; flex-direction: column; gap: 16px; }
.demo-chips-section {}
.demo-chips-label {
  font-size: 12px; font-weight: 600; color: #888; margin-bottom: 8px;
}
.demo-chips-row {
  display: flex; flex-wrap: wrap; gap: 8px;
}
.demo-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 5px 14px; font-size: 13px; font-weight: 500;
  border-radius: 20px; background: #f3f4f6; color: #555;
  cursor: pointer; transition: all 0.2s;
  border: 1px solid transparent;
}
.demo-chip:hover {
  background: color-mix(in srgb, var(--ui-primary) 8%, #f3f4f6);
  color: var(--ui-primary);
}
.demo-chip.active {
  background: color-mix(in srgb, var(--ui-primary) 12%, transparent);
  color: var(--ui-primary); font-weight: 600;
  border-color: color-mix(in srgb, var(--ui-primary) 30%, transparent);
}
.demo-chip.removable {
  padding-right: 6px;
}
.demo-chip-remove {
  background: none; border: none; cursor: pointer;
  font-size: 16px; line-height: 1; color: #aaa;
  padding: 0 4px; border-radius: 50%;
  transition: color 0.2s, background 0.2s;
}
.demo-chip-remove:hover {
  color: #ef4444; background: rgba(239,68,68,0.1);
}
.demo-chip.status-success {
  background: #ecfdf5; color: #059669; cursor: default;
}
.demo-chip.status-warning {
  background: #fffbeb; color: #d97706; cursor: default;
}
.demo-chip.status-error {
  background: #fef2f2; color: #dc2626; cursor: default;
}
document.querySelectorAll('.demo-chips-row').forEach(row => {
  row.querySelectorAll('.demo-chip:not(.removable):not([class*=status])').forEach(chip => {
    chip.addEventListener('click', function() {
      this.classList.toggle('active');
    });
  });
});
document.querySelectorAll('.demo-chip-remove').forEach(btn => {
  btn.addEventListener('click', function(e) {
    e.stopPropagation();
    const chip = this.closest('.demo-chip');
    chip.style.transform = 'scale(0.8)';
    chip.style.opacity = '0';
    setTimeout(() => chip.remove(), 200);
  });
});

AIプロンプト

Basic
タグ・チップをHTML/CSSで作ってください。カテゴリのフィルタリングやスキルタグの表示に使います。
Custom
以下の仕様でタグ・チップを実装してください。
- 選択式チップ(クリックで選択/解除のトグル)
- 削除可能なチップ(×ボタン付き、削除アニメーション)
- ステータスチップ(色付きドット付き)
- プライマリカラー: #2563eb
- サイズバリエーション(small / medium / large)
- アイコン付きチップ対応
Advanced
高機能なタグ・チップコンポーネントを実装してください。
- オートコンプリート付きの入力フィールドでタグ追加
- ドラッグ&ドロップで並べ替え
- 最大表示数を超えたら「+N」で折りたたみ
- キーボード操作(Tab移動、Backspaceで最後のタグ削除)
- aria-label, role="option" などアクセシビリティ対応
- バリデーション(重複チェック、最大数制限)
- タグの色をカスタマイズ可能