Tailwind CSSでのマルチセレクトの実装方法


方法1: ネイティブなHTMLセレクト要素を使用する

<div class="relative">
  <select multiple class="block appearance-none w-full bg-white border border-gray-300 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
    <option>選択肢1</option>
    <option>選択肢2</option>
    <option>選択肢3</option>
    <!-- 追加のオプションをここに追加 -->
  </select>
  <div class="pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700">
    <svg class="fill-current h-4 w-4" viewBox="0 0 20 20">
      <path d="M0 0h20v20H0z" />
      <path class="heroicon-ui"
        d="M10 12a2 2 0 11-4 0 2 2 0 014 0zm6-8a2 2 0 012 2v10a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2h2V3a1 1 0 011-1h4a1 1 0 011 1v1h2zM4 6v10h12V6H4zm4 0v1h4V6H8zm0 3v1h4V9H8zm0 3v1h4v-1H8z" />
    </svg>
  </div>
</div>

方法2: Tailwind CSSのカスタムコンポーネントを使用する

<div class="relative">
  <div class="inline-block relative w-64">
    <select multiple
      class="block appearance-none w-full bg-white border border-gray-300 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
      <option>選択肢1</option>
      <option>選択肢2</option>
      <option>選択肢3</option>
      <!-- 追加のオプションをここに追加 -->
    </select>
    <div
      class="pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700 pointer-events-none">
      <svg class="fill-current h-4 w-4" viewBox="0 0 20 20">
        <path d="M0 0h20v20H0z"></path>
        <path class="heroicon-ui"
          d="M10 12a2 2 0 11-4 0 2 2 0 014 0zm6-8a2 2 0 012 2v10a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2h2V3a1 1 0 011-1h4a1 1 0 011 1v1h2zM4 6v10h12V6H4zm4 0v1h4V6H8zm0 3v1h4V9H8zm0 3v1h4v-1H8z"></path>
      </svg>
    </div>
  </div>
</div>

方法3: JavaScriptフレームワークと組み合わせて使用する

<!-- HTML -->
<div class="relative">
  <select id="multiselect" multiple
    class="block appearance-none w-full bg-white border border-gray-300 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
    <option>選択肢1</option>
    <option>選択肢2</option>
    <option>選択肢3</option>
    <!-- 追加のオプションをここに追加 -->
  </select>
  <div class="pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700">
    <svg class="fill-current h-4 w-4" viewBox="0 0 20 20">
      <path d="M0 0h20v20H0z" />
      <path class="heroicon-ui"
        d="M10 12a2 2 0 11-4 0 2 2 0 014 0zm6-8a2 2 0 012 2v10a2 2 0 01-2 2H4a2 2 0 01-2-2V6a2 2 0 012-2h2V3a1 1 0 011-1h4a1 1 0 011 1v1h2zM4 6v10h12V6H4zm4 0v1h4V6H8zm0 3v1h4V9H8zm0 3v1h4v-1H8z" />
    </svg>
  </div>
</div>
<!-- JavaScript -->
<script>
  var multiselect = document.getElementById('multiselect');
  multiselect.addEventListener('change', function () {
    var selectedOptions = Array.from(this.selectedOptions).map(function (option) {
      return option.value;
    });
    console.log(selectedOptions);
  });
</script>

これらの方法を使用すると、Tailwind CSSを介してマルチセレクトを実装することができます。各方法には、選択肢を表示するためのHTMLコードと、必要に応じてJavaScriptを使用して選択されたオプションを処理する方法が含まれています。これらのコード例を使用して、自分のプロジェクトに適したマルチセレクトを作成してください。