ChatGPT解决这个技术问题 Extra ChatGPT

Twitter bootstrap 下拉菜单出现在屏幕之外

我想实现 twitter 引导下拉菜单,这是我的代码:

<span class="dropdown"> 
<a href="#menu1" class="dropdown-toggle" data-toggle="dropdown" ><img class="left" src="/static/img/topmenu_preferences.png" /><b class="caret"></b></a>
<ul class="dropdown-menu">
  <li><a href="#">a</a></li>
  <li><a href="#">b</a></li>
  <li><a href="#">c</a></li>
  <li class="divider"></li>
  <li><a href="#">d</a></li>
</ul>

下拉菜单效果很好,我的下拉菜单位于屏幕右边缘旁边,当我单击下拉切换时,列表会出现在屏幕之外。它看起来像在屏幕上:

https://i.stack.imgur.com/I7cor.png

我该如何解决?

这个问题的正确答案(对于 bootstrap >= v 3.2.0)在这里得到了解决:@cvrebert 的 stackoverflow.com/questions/23654962/…
我相信您的代码缺少结束跨度标记:

s
sigurdo

.pull-right 添加到 ul.dropdown-menu 应该可以

弃用通知:自 Bootstrap v3.1.0 起,下拉菜单上的 .pull-right 已弃用。要右对齐菜单,请使用 .dropdown-menu-right。

弃用通知 2:从 Bootstrap v5 开始,.dropdown-menu-right 已弃用。对于 Bootstrap v5,使用 .dropdown-menu-end。


这是一个完全独立的问题
如果用户使用的是一些较小的屏幕设备,这个答案实际上并不能解决问题——它从左侧而不是右侧(实际上你只是将拉左更改为拉右)。
请参阅 krzychu 答案,因为 Bootstrap.pull-right 已弃用
@HristoEnev 我也是。你的下拉菜单离开按钮了吗?
使用 Boostrap v5.0,它是 .dropdown-menu-end 而不是 .dropdown-menu-right getbootstrap.com/docs/5.0/components/dropdowns/…
I
Ilia

由于 Bootstrap v3.1.0 在下拉菜单中添加 .pull-right 已被弃用。应改为将 .dropdown-menu-right 添加到 ul.dropdown-menuDocs


即使使用最新的引导程序 .pull-right 对我有用,而 .dropdown-menu-right 什么也没做。
这在 Bootstrap 4 中确实有效,除非您将 .dropdown-menu-right 类添加到 div.dropdown-menu (不是 ul)
<ul class="dropdown-menu dropdown-menu-right"> 在 4.1.1 上为我工作
p
praj

对于 Bootstrap 4,添加 dropdown-menu-right 有效。这是一个工作示例..

http://codeply.com/go/w2MJngNkDQ


我尝试了所有其他答案,而这也是唯一对我有用的答案。我正在使用 Bootstrap v. 4.1.0。
G
GiorgosK

一个不需要修改 HTML 只有 CSS 的解决方案

li.dropdown:last-child .dropdown-menu {
  right: 0;
  left: auto;
}

它对于动态生成的菜单特别有用,在这些菜单中并不总是可以将推荐的类 dropdown-menu-right 添加到最后一个元素


这是唯一适用于 bootstrap 4.0.0 的解决方案
M
Mohan Dere

您可以将 .dropdown-pull-right 类与以下 css 一起使用:

.dropdown-pull-right { 浮动:对!重要;右:0;左:自动; } .dropdown-pull-right>.dropdown-menu { 右:0;左:自动; }


D
Dedy Setiawan

在 Bootstrap 4 中,您可以使用 .dropleft

只需更改为:

<span class="dropleft">

或者

添加 .dropdown-menu-{lg,med,sm,xs}-right 到您的下拉菜单

<div class="dropdown-menu dropdown-menu-sm-right" aria-labelledby="dropdown03">
    <a class="dropdown-item" href="#">Action</a>
    <a class="dropdown-item" href="#">Another action</a>
    <a class="dropdown-item" href="#">Something else here</a>
</div>

J
Jeremy Lynch

float-*-right 用于引导程序 4

* = xs, sm, md, lg


h
hackdotslashdotkill

我无法发表评论,因为我的 SO 级别太低,但我只是确保将父容器设置为“溢出:隐藏”(同时确保设置位置)。

<div style="overflow:hidden;position:relative">
    <span class="dropdown"> 
    <a href="#menu1" class="dropdown-toggle" data-toggle="dropdown" ><img class="left" src="/static/img/topmenu_preferences.png" /><b class="caret"></b></a>
    <ul class="dropdown-menu">
      <li><a href="#">a</a></li>
      <li><a href="#">b</a></li>
      <li><a href="#">c</a></li>
      <li class="divider"></li>
      <li><a href="#">d</a></li>
    </ul>
</div>

L
Leonardo Hermoso

如果您使用的是 Bootstrap 5,根据文档:

Dropright:通过将 .dropend 添加到父元素来触发元素右侧的下拉菜单。

<div class="btn-group dropend">
 <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
  Dropright
 </button>
 <ul class="dropdown-menu">
  <!-- Dropdown menu links -->
 </ul>
</div>

J
JavaProScript

我最近遇到了这个问题,我通过将 display="dynamic" 添加到我的 ngbDropdown 来解决它(使用 Angular 12、ngBootstrap 10 和 Bootstrap 4):