我想实现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>
Dropdown效果很好,我的下拉列表位于屏幕右边缘旁边,当我点击我的下拉切换按钮时,列表会移出屏幕。它看起来像在屏幕上:
我该如何解决?
答案 0 :(得分:238)
将.pull-right
添加到ul.dropdown-menu
应该这样做
弃用通知:从Bootstrap v3.1.0开始,下拉菜单中的
.pull-right
为deprecated。要右对齐菜单,请使用.dropdown-menu-right
。
答案 1 :(得分:109)
由于在下拉菜单中不推荐使用Bootstrap v3.1.0添加.pull-right
。应将.dropdown-menu-right
添加到ul.dropdown-menu
。 Docs
答案 2 :(得分:12)
对于Bootstrap 4,添加dropdown-menu-right
有效。这是一个有效的例子。
答案 3 :(得分:11)
不需要仅修改HTML的解决方案是
li.dropdown:last-child .dropdown-menu {
right: 0;
left: auto;
}
它对于动态生成的菜单特别有用,因为它并不总是可以将推荐的类dropdown-menu-right
添加到最后一个元素
答案 4 :(得分:10)
.dropdown-pull-right
:
.dropdown-pull-right {
float: right !important;
right: 0;
left: auto;
}
.dropdown-pull-right>.dropdown-menu {
right: 0;
left: auto;
}
&#13;
<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>
&#13;
答案 5 :(得分:1)
float-*-right
用于Bootstrap 4
*
= xs,sm,md,lg
答案 6 :(得分:1)
在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>
答案 7 :(得分: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>
答案 8 :(得分:0)
如果您使用的是 Bootstrap 5,根据文档:
<块引用>掉落: 通过将 .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>
答案 9 :(得分: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>