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

如何限制select下拉选项列表高度 默认显示5项并启用垂直滚动条

限制select下拉框高度(默认显示5个选项+滚动查看)

原生select的下拉弹出层是浏览器/系统原生渲染的独立UI,不属于普通DOM流,网上大部分直接给select加max-height/overflow: auto的方案无效,核心原因是样式根本作用不到原生弹出层上。
下面两种方案都能直接适配当前的Bootstrap代码结构,复制即可使用。

方案1:CSS+少量原生事件(全浏览器兼容,优先选择)

原理是利用原生size属性控制展开时的可见选项行数,配合绝对定位避免展开时挤压旁边的输入框、按钮元素,兼容性覆盖所有主流浏览器包括旧版IE。

  • 先添加基础样式:
.input-group {
  position: relative;
}
/* select展开状态样式 */
select.form-select[size] {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 999;
  min-width: 200px; /* 和闭合状态下的select宽度保持一致即可 */
  max-height: 210px; /* 对应5个选项+默认提示项的总高度,可根据实际字号微调 */
  overflow-y: auto;
}
/* 给后面的输入框留够左边距,避免被绝对定位的select遮挡 */
#autocomplete {
  margin-left: 200px;
}
  • 给select标签加三个原生事件,不需要额外编写JS函数,直接内联到标签上即可:
<select 
  id="select" 
  class="form-select" 
  aria-label=".form-select example"
  onmousedown="if(this.options.length>5) this.size=6"
  onblur="this.size=1"
  onchange="this.size=1; this.blur()"
>

*参数说明:这里size设为6是因为第一个选项是默认提示「Select a Species」,6行刚好展示1个提示项+5个有效选项;如果不需要提示项,把size改成5就能刚好显示5个选项。

  • 效果:点击select触发展开,固定高度下最多显示5个有效选项,剩余选项通过垂直滚动条查看,选中选项后自动恢复成普通下拉的闭合状态,不会破坏原有input-group的布局。

方案2:纯CSS实现(无JS,仅适配现代浏览器)

如果不想加事件逻辑,可以用纯CSS方案,适配Chrome、Edge、Firefox等2020年之后发布的现代浏览器:

.input-group {
  position: relative;
}
select.form-select:focus {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 999;
  min-width: 200px;
  max-height: 210px;
  overflow-y: auto;
  background-image: none; /* 隐藏默认下拉箭头避免样式错乱 */
}
#autocomplete {
  margin-left: 200px;
}
  • 注意:这个方案需要补一行极短的JS让选中后自动收起下拉,不然选中后select会保持展开状态:
document.getElementById('select').addEventListener('change', e => e.target.blur())

完整可直接运行的代码片段

<div class="input-group input-group-lg mb-3" style="position: relative;">    
  <input id="Species" type='hidden' name='Species' value=''> 
  <select 
    id="select" 
    class="form-select" 
    aria-label=".form-select example"
    onmousedown="if(this.options.length>5) this.size=6"
    onblur="this.size=1"
    onchange="this.size=1; this.blur()"
  >   
    <option class="option" value="ex" id="ex">Select a Species</option> 
    <option value="1" id="1">1</option>
    <option value="2" id="2">2</option>
    <option value="3" id="3">3</option>
    <option value="4" id="4">4</option> 
    <option value="5" id="5">5</option>
    <option value="6" id="6">6</option>
    <option value="7" id="7">7</option>
    <option value="8" id="8">8</option>  
    <option value="9" id="9">9</option>
    <option value="10" id="10">10</option>
    <option value="11" id="11">11</option>                                                           
    <option value="12" id="12">12</option>
    <option value="13" id="13">13</option>
    <option value="14" id="14">14</option> 
    <option value="15" id="15">15</option>
    <option value="16" id="16">16</option>
    <option value="17" id="17">17</option>
    <option value="18" id="18">18</option>  
    <option value="19" id="19">19</option>
    <option value="20" id="20">20</option>
    <option value="21" id="21">21</option>
    <option value="22" id="22">22</option>
    <option value="23" id="23">23</option>  
    <option value="24" id="24">24</option>
    <option value="25" id="25">25</option>
  </select>
  <input class="form-control" type="text" id="autocomplete" name="Keyword" placeholder="Type something" data-toggle="tooltip" data-bs-placement="top" style="margin-left: 200px;"> 
  <button class="btn btn-success" type="submit" id="search" value="submit">Search</button>
</div>

如果显示的选项数量不对,直接调整max-height的数值和size参数即可,数值越大单次显示的选项越多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:06:27