OK, então o que eu preciso é bem direto.
Eu configurei uma barra de navegação com alguns menus suspensos (usando class="dropdown-toggle" data-toggle="dropdown"
) e funciona bem.
O problema é que " onClick
" funciona , enquanto eu preferiria que funcionasse " onHover
".
Existe alguma maneira embutida de fazer isso?
javascript
jquery
html
css
twitter-bootstrap
Dr.Kameleon
fonte
fonte
Respostas:
A solução mais fácil seria em CSS. Adicione algo como ...
Violino de trabalho
fonte
data-toggle
atributo para tornar o item pai clicável ... Apenas observe os danos colaterais nas telas de dispositivos móveis.A melhor maneira de fazer isso é acionar apenas o evento de clique de inicialização com um cursor do mouse. Dessa forma, ele ainda deve permanecer amigável ao dispositivo sensível ao toque
fonte
Você pode usar a função de foco instantâneo do jQuery.
Você só precisa adicionar a classe
open
quando o mouse entra e remover a classe quando o mouse sai da lista suspensa.Aqui está o meu código:
fonte
show
em vez deopen
, e também incluem adropdown-menu
:$('.dropdown').hover(function() { $(this).addClass('show'); $(this).find('.dropdown-menu').addClass('show');}, function() {$(this).removeClass('show'); $(this).find('.dropdown-menu').removeClass('show');});
(. Desculpe pela formatação)Uma maneira fácil, usando jQuery, é esta:
fonte
.first()
-$(this).find('.dropdown-menu').first().stop(true, true).delay(200).fadeIn(200);
...Para CSS, fica louco quando você também clica nele. Este é o código que estou usando, mas também não altera nada na visualização para dispositivos móveis.
fonte
No Twitter, o Bootstrap não está implementado, mas você pode usar o plugin this
Atualização 1:
A mesma pergunta aqui
fonte
Passe o mouse sobre os itens de navegação para ver se eles são ativados ao passar o mouse. http://cameronspear.com/demos/twitter-bootstrap-hover-dropdown/#
fonte
Então você tem este código:
Normalmente ele funciona no evento de clique e você deseja que ele funcione no evento de foco. Isso é muito simples, basta usar este código javascript / jquery:
Isso funciona muito bem e aqui está a explicação: temos um botão e um menu. Quando passamos o mouse, exibimos o menu e, quando passamos o mouse, ocultamos o menu após 100ms. Se você se pergunta por que eu uso isso, é porque você precisa de tempo para arrastar o cursor do botão sobre o menu. Quando você está no menu, a hora é redefinida e você pode ficar lá quantas vezes quiser. Quando você sai do menu, ocultaremos o menu instantaneamente sem tempo limite.
Eu usei esse código em muitos projetos; se você encontrar algum problema com ele, sinta-se à vontade para me fazer perguntas.
fonte
Isto é o que eu uso para fazê-lo suspenso ao passar o mouse com algum jQuery
fonte
Experimente fazer isso usando a função hover com animações fadein fadeout
fonte
Isso o ajudará a criar sua própria classe de foco para o bootstrap:
CSS:
As margens são definidas para evitar fechamentos indesejados e são opcionais.
HTML:
Não se esqueça de remover o atributo do botão data-toggle = "dropdown" se você deseja remover o onclick aberto, e isso também funcionará quando a entrada for anexada ao dropdown.
fonte
Isso só passa a barra de navegação quando você não está em um dispositivo móvel, porque acho que passar a navegação não funciona bem em dispositivos móveis:
fonte
Eu tento outras soluções, estou usando o bootstrap 3, mas o menu suspenso fecha muito rapidamente para passar por cima dele
supunha que você adicionasse class = "dropdown" a li, adicionei um tempo limite
fonte
Atualizado com um plugin adequado
Publiquei um plug-in adequado para a funcionalidade suspensa suspensa, na qual você pode definir o que acontece ao clicar no
dropdown-toggle
elemento:https://github.com/istvan-ujjmeszaros/bootstrap-dropdown-hover
Por que eu fiz isso, quando já existem muitas soluções?
Eu tive problemas com todas as soluções existentes anteriormente. Os CSS simples não estão usando a
.open
classe no.dropdown
, portanto, não haverá feedback no elemento de alternância do menu suspenso quando o menu suspenso estiver visível.Os js estão interferindo no clique
.dropdown-toggle
, então o menu suspenso aparece ao passar o mouse, depois o oculta ao clicar em um menu suspenso aberto, e sair do mouse aciona o menu suspenso para aparecer novamente. Algumas das soluções js estão travando a compatibilidade com o iOS, alguns plugins não estão funcionando em navegadores de desktop modernos que suportam os eventos de toque.Foi por isso que criei o plug-in Bootstrap Dropdown Hover, que evita todos esses problemas usando apenas a API javascript Bootstrap padrão, sem qualquer invasão.
fonte
fonte
Acionar um
click
evento com umhover
erro pequeno. Semouse-in
e, em seguida, aclick
cria um efeito vice-versa. Éopens
quandomouse-out
eclose
quandomouse-in
. Uma solução melhor:fonte
html
jquery
codepen
fonte
A solução que estou propondo detecta se o dispositivo não é sensível ao toque e se o
navbar-toggle
(menu hambúrguer) não está visível e faz com que o item de menu pai revele o submenu ao passar o mouse e siga o link no clique .Também faz com que o margem seja 0, porque a diferença entre a barra de navegação e o menu em algum navegador não permitirá que você passe o mouse pelos subitens
fonte
Menu suspenso Bootstrap Trabalhe em foco e permaneça próximo ao clicar adicionando a propriedade display: block; em css e removendo esses atributos data-toggle = "dropdown" role = "button" da tag button
fonte