Eu estava tentando criar um submenu de bootstrap do Twitter no menu suspenso, mas estou com um problema: tenho um menu suspenso no canto superior direito da página e esse menu tem mais um submenu. No entanto, quando o submenu é aberto - ele não cabe na janela e vai muito para a direita, para que o usuário possa ver apenas as primeiras letras. Como fazer esse submenu abrir não para a direita, mas para a esquerda?
javascript
jquery
css
twitter-bootstrap
kovpack
fonte
fonte
.pull-right
o.dropdown
contêiner.Respostas:
A maneira mais simples seria adicionar a
pull-left
classe ao seudropdown-submenu
jsfiddle: DEMO
fonte
.dropdown-submenu.pull-left>.dropdown-menu { width: 100%; }
Não é uma solução elegante, mas parece funcionar jsfiddle.net/r1v90tasSe entendi direito, o bootstrap fornece uma classe CSS apenas para este caso. Adicione 'pull-right' ao menu 'ul':
..e o resultado final é que as opções do menu aparecem alinhadas à direita, em linha com o botão a partir do qual elas são suspensas.
fonte
pull-right
classe para fazer isso.A turma atual
.dropdown-submenu > .dropdown-menu
temleft: 100%;
. Portanto, se você deseja abrir o submenu no lado esquerdo, substitua essas configurações para a posição esquerda negativa. Por exemploleft: -95%;
. Agora você obterá o submenu do lado esquerdo e poderá ajustar outras configurações para obter uma visualização perfeita.Aqui está o DEMO
EDIT: A pergunta do OP e minha resposta são de agosto de 2012. Enquanto isso, o Bootstrap mudou, então agora você tem a classe .pull-left. Naquela época, minha resposta estava correta. Agora você não precisa definir manualmente o css, você tem aquela classe .pull-left.
EDIT 2: Demos não está funcionando, porque o Bootstrap mudou seus URLs. Basta alterar os recursos externos no jsfiddle e substituí-los por novos.
fonte
left: -90%;
(do contrário, não consigo mover meu mouse para esse submenu, porque ele desaparece).Se você estiver usando o bootstrap v4, há uma nova maneira de fazer isso.
Você deve usar
.dropdown-menu-right
no.dropdown-menu
elemento.Link para o código: https://getbootstrap.com/docs/4.0/components/dropdowns/#menu-items
fonte
dropleft
e,dropright
mas o contexto da resposta está correto. Obrigado!A maneira correta de fazer a tarefa é:
fonte
.dropdown-submenu { position: relative; text-align:right; }
Posicionar o texto à direita quando a seta está à esquerda.Eu criei uma função javascript que verifica se ele tem espaço suficiente no lado direito. Se tiver, ele vai mostrar no lado direito, senão ele vai mostrar no lado esquerdo
Testado em:
Javascript:
porque não quero adicionar essa correção em todos os itens de menu, criei uma nova classe nele. coloque o menu fixo no ul:
Espero que isso funcione para você.
ps. pequeno bug no safari e no cromo, primeiro passe o mouse para colocá-lo para mutch à esquerda para atualizar este post se eu corrigi-lo.
fonte
Se você tiver apenas um nível e usar bootstrap 3, adicione
pull-right
aoul
elementofonte
Na verdade - se você concordar em flutuar o
dropdown
invólucro - descobri que é tão fácil quanto adicionarnavbar-right
aodropdown
.Isso parece trapaça, já que não está em uma barra de navegação, mas funciona bem para mim.
Você pode personalizar ainda mais o flutuante com um
pull-left
diretamente nodropdown
...... ou como um envoltório em torno dele ...
fonte
Se você estiver usando MENOS CSS, escrevi um pequeno mixin para mover o menu suspenso com a seta de conexão:
Em seguida, para mover um
.dropdown-menu
com um id de,dropdown-menu-x
por exemplo, você pode fazer:fonte
Eu criei uma função javascript que verifica se ele tem espaço suficiente no lado direito. Se tiver, ele irá mostrá-lo no lado direito, senão ele irá mostrá-lo no lado esquerdo. Novamente, se houver espaço suficiente no lado direito, aparecerá o lado direito. é um loop ...
});
fonte
Você está usando a versão mais recente do bootstrap? Eu adaptei o html do exemplo do Fluid Layout como mostrado abaixo. Eu adicionei uma lista suspensa e coloquei-a mais à direita, adicionando a
pull-right
classe. Ao passar o mouse sobre o menu suspenso, ele é automaticamente puxado para a esquerda e nada fica oculto - todo o texto do menu fica visível. Eu não usei nenhum css personalizado.fonte
A única coisa que você tem que fazer é
do menu que você deseja exibir no lado DIREITO.
fonte