You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Bootstrap 5和Bootstrap Icons在select下拉框中添加图标

你之前使用的data-icon是第三方 Bootstrap Select 插件的专属属性,Bootstrap 5 原生并不支持该属性直接渲染图标,因此直接添加在原生<select>的<option>标签上无法生效。你可以选择以下两种Bootstrap 5原生支持的方案实现需求:

方案一:使用Dropdown组件模拟下拉选择(灵活度最高)

该方案完全还原你预期的图标显示效果,同时支持后续扩展每个选项的自定义图标,只需提前引入Bootstrap 5及Bootstrap Icons官方样式即可,实现代码如下:

<!-- 下拉触发按钮 -->
<div class="dropdown">
  <button class="btn btn-outline-secondary dropdown-toggle d-flex align-items-center gap-2" type="button" data-bs-toggle="dropdown" aria-expanded="false" id="filterDropdown">
    <i class="bi bi-funnel-fill"></i>
    <span id="filterText">Filter</span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="filterDropdown">
    <li><button class="dropdown-item active" data-value="filter">Filter</button></li>
    <li><button class="dropdown-item" data-value="1">All</button></li>
    <li><button class="dropdown-item" data-value="2">Active</button></li>
    <li><button class="dropdown-item" data-value="3">Inactive</button></li>
  </ul>
</div>

<!-- 隐藏的原生select控件,用于表单提交时传值 -->
<select class="d-none" id="filterSelect" name="filter">
  <option value="filter" selected>Filter</option>
  <option value="1">All</option>
  <option value="2">Active</option>
  <option value="3">Inactive</option>
</select>

<!-- 配套交互逻辑 -->
<script>
const dropdownItems = document.querySelectorAll('.dropdown-item')
const filterText = document.getElementById('filterText')
const filterSelect = document.getElementById('filterSelect')

dropdownItems.forEach(item => {
  item.addEventListener('click', () => {
    // 更新按钮显示文本
    filterText.textContent = item.textContent
    // 同步隐藏select的选中值
    filterSelect.value = item.dataset.value
    // 切换选中状态样式
    dropdownItems.forEach(i => i.classList.remove('active'))
    item.classList.add('active')
  })
})
</script>

方案二:使用Input Group给原生select加前缀图标

如果不需要切换选项时改变图标,仅需要固定显示漏斗图标,可以用输入组组件实现,代码更简单,保留原生select的交互逻辑:

<div class="input-group">
  <span class="input-group-text">
    <i class="bi bi-funnel-fill"></i>
  </span>
  <select class="form-select" aria-label="Filter select">
    <option selected>Filter</option>
    <option value="1">All</option>
    <option value="2">Active</option>
    <option value="3">Inactive</option>
  </select>
</div>

内容的提问来源于stack exchange,提问作者Cheknov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:06:03