Bootstrap 调整下拉菜单宽度

Posted

技术标签:

【中文标题】Bootstrap 调整下拉菜单宽度【英文标题】:Bootstrap adjust dropdown-menu width 【发布时间】:2016-06-14 02:09:50 【问题描述】:

我正在使用下拉菜单来显示我可以选择的候选选项。而且我还想要一个输入来过滤选项,所以当我输入一些东西时,下拉菜单也应该显示出来。所以我想将下拉菜单的宽度调整为等于输入。当我在输入中输入内容时如何显示它?

我目前使用的html是:

<div class="input-group">
    <input type="text" class="form-control" aria-label="...">
    <div class="input-group-btn">
        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <span class="caret"></span>
        </button>
        <ul class="dropdown-menu dropdown-menu-right">
            <li><a href="#">Action</a></li>
            <li><a href="#">Another action</a></li>
            <li><a href="#">Something else here</a></li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a></li>
        </ul>
    </div><!-- /btn-group -->

【问题讨论】:

您使用的是哪个版本的引导程序? 您是否尝试过添加自己的 CSS 规则以使下拉字段的宽度为父 div 的 100%? 【参考方案1】:

实际上,如果我理解正确,您正在搜索带有给定可选选项的建议搜索框。

看到这个帖子:twitter bootstrap autocomplete dropdown / combobox with Knockoutjs

解决方案建议:selectize.js 或Select2

自动将下拉菜单的宽度调整为等于输入的宽度这一方面很难实现,因为它会切断您给定的一些选择(例如:输入只有一个字符 - 下拉菜单只会显示每个选择的第一个字符)。这不可能是你想要达到的。

【讨论】:

是的。你说的对。我实际上想让下拉菜单的宽度等于 元素的宽度,而不是用户的输入。看来 selectize.js 是我想要的。非常感谢。【参考方案2】:

可能的解决方案:

$('.dropdown-menu').width($('.input-group').width());
.input-group
  width:33%;
  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

<div class="input-group">
<input type="text" class="form-control" aria-label="...">
<div class="input-group-btn">
    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="caret"></span></button>
    <ul class="dropdown-menu dropdown-menu-right">
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
        <li role="separator" class="divider"></li>
        <li><a href="#">Separated link</a></li>
    </ul>
</div><!-- /btn-group -->

【讨论】:

谢谢,但我不能自动将宽度调整为等于输入的宽度吗?您的解决方案显然是固定宽度,这不是我想要的。 据我所知只有javascript解决方案 我已经用 jquery 解决方案更新了我的解决方案。现在宽度根据输入宽度变化

以上是关于Bootstrap 调整下拉菜单宽度的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 下拉菜单:删除滚动条

Bootstrap 导航栏链接宽度意外扩展

选择固定宽度的下拉菜单,在 IE 中截断内容

带有 twitter-bootstrap 的下拉菜单

我们如何在下拉菜单中更改 Flutter DropdownMenuItem 的宽度/填充?

下拉菜单中的 Bootstrap4 下拉菜单关闭父菜单