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

Firefox中绝对定位固定高度Div出现无用水平滚动条问题

解决Firefox下拉菜单多余水平滚动条问题

问题场景

我正在开发一款多浏览器兼容的下拉菜单,输入框下方是绝对定位的div,内部包含可滚动的选项列表。在Firefox中给这个div设置固定高度(比如限制在视口内)并触发垂直滚动条时,会同时出现无用的水平滚动条。Edge里只显示垂直滚动条,但Firefox会多出水平滚动条。

我没法预先知道列表项宽度,不能设固定宽度;也不想给Firefox的div加内边距,因为没有垂直滚动条时右侧会留空白,而且列表项没法占满div宽度。

示例代码:

<div style="position: absolute; height: 150px; overflow: auto;">
 <div>SomeText0</div>
 <div>SomeText1</div>
 <div>SomeText2</div>
 <div>SomeText3</div>
 <div>SomeText4</div>
 <div>SomeText5</div>
 <div>SomeText6</div>
 <div>SomeText7</div>
 <div>SomeText8</div>
 <div>SomeText9</div>
</div>

解决方案

方法1:强制隐藏水平滚动条

给容器单独设置垂直滚动条自适应,同时强制隐藏水平滚动条,适合确认内容不会超出水平范围的场景:

.dropdown-container {
  position: absolute;
  height: 150px;
  overflow-y: auto;
  overflow-x: hidden;
}

方法2:使用scrollbar-gutter预留滚动条空间

这是CSS原生解决方案,能在容器一侧预留滚动条宽度,无论滚动条是否存在,内容区域宽度保持一致,从根源避免水平滚动条出现(Firefox 64+、Chrome 94+支持):

.dropdown-container {
  position: absolute;
  height: 150px;
  overflow: auto;
  scrollbar-gutter: stable;
}

方法3:确保内部列表项宽度适配容器

配合方法1使用,让内部列表项强制占满容器宽度,防止内容溢出:

.dropdown-container {
  position: absolute;
  height: 150px;
  overflow-y: auto;
  overflow-x: hidden;
}
.dropdown-container > div {
  box-sizing: border-box;
  width: 100%;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 23:35:30