Il menu a discesa del bootstrap di Twitter esce dallo schermo


151

Voglio implementare il menu a discesa Twitter Bootstrap, ecco il mio codice:

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

Il menu a discesa funziona bene, il mio menu a discesa viene posizionato accanto al bordo destro dello schermo e quando faccio clic sull'interruttore a discesa, l'elenco va fuori dallo schermo. Sembra sullo schermo:

inserisci qui la descrizione dell'immagine

Come posso ripararlo?


La risposta corretta (per bootstrap> = v 3.2.0) a questa domanda si risolve qui: stackoverflow.com/questions/23654962/... da @cvrebert.
Michael Trouw,

Credo che al tuo codice manchi un tag di span di fine: </span>
stealthysnacks

Risposte:


263

aggiungendo .pull-righta ul.dropdown-menudovrebbe farlo

Avviso di deprecazione : a partire da Bootstrap v3.1.0, .pull-rightnei menu a discesa è obsoleto . Per allineare un menu a destra, utilizzare .dropdown-menu-right.


29
Questa è una domanda completamente separata
Dewayne, il

14
Questa risposta in realtà non risolve il problema se l'utente sta utilizzando un dispositivo con schermo più piccolo - sta uscendo dal lato sinistro invece del lato destro (in effetti basta cambiare il pull-left con il pull-right).
Anonimo il

5
Vedi krzychu come Bootstrap.pull-right è deprecato
Jeroen,

1
@HristoEnev me neanche. I tuoi menu a discesa sono andati molto lontano dal pulsante?
Choylton B. Higginbottom,

116

Poiché l'aggiunta di Bootstrap v3.1.0 .pull-rightè obsoleta nei menu a discesa. A .dropdown-menu-rightdovrebbe essere aggiunto ul.dropdown-menuinvece. Documenti


10
Anche con l'ultimo bootstrap .pull-right funziona per me e .dropdown-menu-right non fa nulla.
Shane Grant,

Questo funziona davvero in Bootstrap 4, tranne per il fatto che aggiungi la classe .dropdown-menu-right al div.dropdown-menu (non ul)
Timothy Kanski

<ul class="dropdown-menu dropdown-menu-right">ha lavorato per me il 4.1.1
dw1 del

22

Per Bootstrap 4, l'aggiunta di dropdown-menu-rightlavori. Ecco un esempio funzionante ..

http://codeply.com/go/w2MJngNkDQ


Ho provato tutte le altre risposte, e questa è stata l'unica che ha funzionato anche per me. Sto usando Bootstrap v. 4.1.0.
Zeth,

14

una soluzione che non ha bisogno di modificare l'HTML è solo il CSS

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

È particolarmente utile per i menu generati dinamicamente in cui non è sempre possibile aggiungere la classe consigliata dropdown-menu-rightall'ultimo elemento


1
questa è l'unica soluzione che funziona per bootstrap 4.0.0
charsi

10

Puoi usare class .dropdown-pull-rightcon i seguenti 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

in Bootstrap 4 puoi usare .dropleft

basta passare a:

<span class="dropleft">

o

aggiungi .dropdown-menu- {lg, med, sm, xs} -right al tuo menu a discesa

<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

Non posso lasciare un commento perché il mio livello SO è troppo basso, ma mi sono appena assicurato che il contenitore padre sia impostato su "overflow: nascosto" in questo modo (assicurati anche che sia impostata la posizione).

<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>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.