HTMLでウェブサイト内検索バーを作成する方法: `<input type="search">` 要素のガイド


主な機能

  • 入力値の検証
    pattern 属性を使用して、ユーザーが入力できる値を制限することができます。例えば、郵便番号の形式を指定したり、数字のみを入力できるようにしたりすることができます。
  • 検索履歴の提案
    一部のブラウザでは、ユーザーが過去に入力した検索語を記憶し、<input type="search"> 要素に入力時に提案する機能があります。
  • オートフォーカス
    一部のブラウザでは、ページがロードされるときに <input type="search"> 要素が自動的にフォーカスされるように設定されています。これは、ユーザーがすぐに検索を開始できるようにするためです。
  • 検索バーの外観
    ブラウザは、<input type="search"> 要素に専用のスタイルを適用することが多いため、ユーザーはそれが検索目的であることを直感的に理解できます。具体的には、検索アイコンや虫眼鏡のアイコンが表示される場合があります。

構文

<input type="search" id="search-box" name="search-term" placeholder="例:キーワードを入力">

属性

  • autofocus
    ページがロードされたときに要素を自動的にフォーカスするかどうかを制御します。
  • autocomplete
    ブラウザが検索履歴を提案するかどうかを制御します。
  • pattern
    ユーザーが入力できる値の形式を正規表現で指定します。
  • placeholder
    入力フィールドが空の場合に表示されるヒントテキストを指定します。
  • name
    送信されたデータに関連付けられる名前を指定します。
  • id
    要素の一意的な識別子を指定します。


この例では、シンプルな検索ボックスを作成します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="search" id="search-box" name="search-term" placeholder="例:キーワードを入力">
    <button type="submit">検索</button>
  </form>
</body>
</html>

このコードは、次のようないくつかの点で興味深いです。

  • <button type="submit"> 要素は、フォームを送信するためのボタンを作成します。
  • action 属性は、送信されたデータが送信される URL を指定します。
  • <form> タグを使用して、検索クエリを送信するためのフォームを定義しています。
  • ユーザーログインフォーム
  • ドキュメント検索
  • ウェブサイト内記事検索
  • 商品検索フォーム
  • アクセシビリティのために、<input type="search"> 要素には適切な aria-label 属性と aria-labelledby 属性を指定する必要があります。
  • <input type="search"> 要素は、JavaScriptを使用して高度な検索機能を実装するために使用することができます。例えば、入力されたテキストに基づいて自動的に結果を提案したり、絞り込みオプションを提供したりすることができます。


基本的な検索ボックス

この例は、前述の基本的な例と同じですが、autocomplete 属性を追加して、ブラウザが検索履歴を提案しないようにしています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="search" id="search-box" name="search-term" placeholder="例:キーワードを入力" autocomplete="off">
    <button type="submit">検索</button>
  </form>
</body>
</html>

検索履歴の提案を有効にする

この例は、autocomplete 属性を "on" に設定して、ブラウザが検索履歴を提案できるようにしています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="search" id="search-box" name="search-term" placeholder="例:キーワードを入力" autocomplete="on">
    <button type="submit">検索</button>
  </form>
</body>
</html>

入力値を検証する

この例は、pattern 属性を使用して、ユーザーが入力できる値を英数字のみに制限しています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="search" id="search-box" name="search-term" placeholder="英数字のみを入力" pattern="[A-Za-z0-9]+">
    <button type="submit">検索</button>
  </form>
</body>
</html>

プレースホルダーとラベルを使用する

この例は、placeholder 属性と <label> 要素を使用して、検索ボックスの目的を明確にしています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <label for="search-box">キーワードを入力:</label>
  <input type="search" id="search-box" name="search-term" placeholder="例:キーワードを入力">
  <button type="submit">検索</button>
</body>
</html>

カスタム検索ボタンを使用する

この例は、<button type="submit"> 要素の代わりに、画像を使用して検索を実行するボタンを作成しています。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="search" id="search-box" name="search-term" placeholder="例:キーワードを入力">
    <button type="submit"><img src="search-icon.png" alt="検索"></button>
  </form>
</body>
</html>

これらの例は、<input type="search"> 要素を様々な方法で使用する方法を示すほんの一例です。創造性を発揮し、ニーズに合った検索ボックスを作成してください。

  • アクセシビリティのために、aria-label 属性と aria-labelledby 属性を使用して、スクリーンリーダーユーザーのために検索ボックスを正しく説明してください。
  • JavaScriptを使用して、検索機能を拡張することができます。例えば、入力されたテキストに基づいて自動的に結果を提案したり、絞り込みオプションを提供したりすることができます。
  • CSSを使用して、検索ボックスの外観をさらにカスタマイズすることができます。


input type="text" と datalist 属性

  • 欠点:
    • 検索バーとしてのスタイリングがデフォルトでは適用されない
    • ユーザーが検索目的であることを直感的に理解できない場合がある
  • 利点:
    • シンプルで分かりやすい実装
    • 多くのブラウザでサポートされている
    • 入力候補を簡単に表示できる
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="text" id="search-box" name="search-term" list="search-suggestions" placeholder="例:キーワードを入力">
    <datalist id="search-suggestions">
      <option value="キーワード1">キーワード1の説明</option>
      <option value="キーワード2">キーワード2の説明</option>
      </datalist>
    <button type="submit">検索</button>
  </form>
</body>
</html>

カスタムセレクツまたはドロップダウンメニュー

  • 欠点:
    • キーボード操作に適していない場合がある
    • 見た目が現代的な検索バーとは異なる場合がある
  • 利点:
    • 特定の検索シナリオに柔軟に適応できる
    • 入力候補を明確に構造化して提示できる
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <label for="search-category">カテゴリーを選択:</label>
    <select id="search-category" name="search-category">
      <option value="">すべて</option>
      <option value="カテゴリー1">カテゴリー1</option>
      <option value="カテゴリー2">カテゴリー2</option>
      </select>
    <label for="search-term">キーワードを入力:</label>
    <input type="text" id="search-term" name="search-term" placeholder="例:キーワードを入力">
    <button type="submit">検索</button>
  </form>
</body>
</html>

オートコンプリートライブラリ

  • 欠点:
    • 実装と設定が複雑になる場合がある
    • 追加のライブラリの読み込みが必要
  • 利点:
    • 高度な入力候補機能と予測機能を提供
    • ユーザーエクスペリエンスを向上させることができる

この例では、 ライブラリを使用して、高度なオートコンプリート機能を備えた検索ボックスを作成する方法を示します。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>検索ボックス</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
  <script>
    $(document).ready(function() {
      $("#search-box").autocomplete({
        source: ["キーワード1", "キーワード2", "キーワード3", /* ... */],
        minLength: 2
      });
    });
  </script>
</head>
<body>
  <h1>ウェブサイト内検索</h1>
  <form action="/search">
    <input type="text" id="search-box" name="search-term" placeholder="例:キーワードを入力">
    <button type="submit">検索</button>
  </form>
</body>
</html>
  • 利点:
    • 完全な制御と柔軟性
    • 特定