Twitter引导下拉菜单超出屏幕范围


151

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

<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>

下拉菜单效果很好,我的下拉菜单位于屏幕右侧,当我单击下拉菜单时,列表位于屏幕之外。在屏幕上看起来像:

在此处输入图片说明

我该如何解决?


对此问题的正确答案(对于引导程序> = v 3.2.0)在此处得到解决:@cvrebert撰写的stackoverflow.com/questions/23654962/…
Michael Trouw

我相信您的代码缺少结尾跨度标签:</ span>
secretthysnacks

Answers:


261

添加.pull-rightul.dropdown-menu应该做

弃用声明:从Bootstrap v3.1.0开始,不推荐使用.pull-right下拉菜单中的。要使菜单右对齐,请使用。.dropdown-menu-right


29
这是一个完全独立的问题
Dewayne

14
如果用户使用的是较小的屏幕设备,此答案实际上并不能解决问题-它是从左侧而不是右侧移出(实际上,您只是将左上角更改为右上角)。
2013年

5
见krzychu答案Bootstrap.pull右已经过时
吉荣

1
@HristoEnev也可以。您的下拉菜单偏离按钮了吗?
Choylton B. Higginbottom 2015年

116

从Bootstrap v3.1.0开始.pull-right,下拉菜单中不建议添加。一个.dropdown-menu-right应该被添加到ul.dropdown-menu代替。文件


10
即使使用最新的引导程序,.pull-right也对我有效,而.dropdown-menu-right则不起作用。
Shane Grant

这确实在Bootstrap 4中有效,除了您将类.dropdown-menu-right添加到div.dropdown-menu(不是ul)之外
Timothy

<ul class="dropdown-menu dropdown-menu-right">在4.1.1
dw1

22

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

http://codeply.com/go/w2MJngNkDQ


我尝试了所有其他答案,而这个答案也是唯一对我有用的答案。我正在使用Bootstrap 4.1.0版。
Zeth,

14

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

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

它对于动态生成的菜单特别有用,在这种情况下,并非总是可能将推荐的类添加dropdown-menu-right到最后一个元素


1
这是唯一适用于Bootstrap 4.0.0的解决方案
charsi 18'Jan

10

您可以将class .dropdown-pull-right与以下CSS结合使用:

.dropdown-pull-right {
  float: right !important;
  right: 0;
  left: auto;
}

.dropdown-pull-right>.dropdown-menu {
  right: 0;
  left: auto;
}
<link href="https://maxcdn.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet"/>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script>


<div class="dropdown dropdown-pull-right btn-group">
  <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
  Open Dropdown
  <span class="caret"></span>
  </a>
  <ul class="dropdown-menu">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3</li>
  </ul>
</div>


2

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

只需更改为:

<span class="dropleft">

要么

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

<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>


0

我不能发表评论,因为我的SO级别太低,但是我只是确保将父容器设置为“ overflow:hidden”,就像这样(还要确保已设置位置)。

<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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.