160

我想实现 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>

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

在此处输入图像描述

我该如何解决?

4

10 回答 10

278

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

弃用通知:从 Bootstrap v3.1.0 开始,.pull-right下拉菜单中的deprecated。要右对齐菜单,请使用.dropdown-menu-right.

于 2012-12-10T18:58:38.137 回答
117

由于 Bootstrap v3.1.0.pull-right不推荐在下拉菜单中添加。.dropdown-menu-rightul.dropdown-menu改为添加A。文档

于 2014-05-21T05:23:50.303 回答
27

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

http://codeply.com/go/w2MJngNkDQ

于 2018-03-09T21:03:47.857 回答
19

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

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

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

于 2017-03-23T13:35:31.697 回答
12

您可以将类.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>

于 2015-07-22T06:40:54.707 回答
3

在 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>
于 2019-05-13T02:23:32.247 回答
2

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

*= xs, sm, md, lg

于 2016-12-23T08:25:26.890 回答
0

我无法发表评论,因为我的 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>
于 2020-05-14T19:39:16.827 回答
0

如果您使用的是 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>
于 2021-04-15T20:29:55.363 回答
0

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

<div class="row">
  <div class="col">
    <div ngbDropdown display="dynamic" class="d-inline-block dropdown-menu-right">
      <button class="btn btn-outline-primary" id="navbarDropdownForm" ngbDropdownToggle>Sign in</button>
      <div ngbDropdownMenu aria-labelledby="navbarDropdownForm">
        <form class="px-4 py-3">
          <div class="form-group">
            <label for="navbarDropdownFormEmail">Email address</label>
            <input type="email" class="form-control" id="navbarDropdownFormEmail" placeholder="email@example.com"
              autocomplete="username">
          </div>
          <div class="form-group">
            <label for="navbarDropdownFormPassword">Password</label>
            <input type="password" class="form-control" id="navbarDropdownFormPassword" placeholder="Password"
              autocomplete="current-password">
          </div>
          <div class="form-check">
            <input type="checkbox" class="form-check-input" id="dropdownCheck">
            <label class="form-check-label" for="dropdownCheck">
              Remember me
            </label>
          </div>
          <button type="submit" class="btn btn-primary">Sign in</button>
        </form>
        <div class="dropdown-divider"></div>
        <button ngbDropdownItem>New around here? Sign up</button>
        <button ngbDropdownItem>Forgot password?</button>
      </div>
    </div>
  </div>
</div>

于 2021-07-28T10:17:11.037 回答