Esta não é uma lista suspensa de submenus, a categoria é classe li, como na figura:
Ao selecionar uma categoria no menu responsivo (o modelo é apenas uma página), desejo ocultar o colapso da navegação automaticamente ao clicar. Também passe para usar como navegação, pois o modelo tem apenas uma página. Eu procuro uma solução que não a afete, aqui está o código HTML do menu:
<!-- NAVBAR
================================================== -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Carousel Demo</a>
<div class="nav-collapse">
<ul class="nav" >
<li class="active"><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#portfolio">Portfolio</a></li>
<li><a href="#services">Services</a></li>
<li><a href="#contact">Contact</a></li>
<!-- dropdown -->
</ul>
<!-- /.nav -->
</div>
<!--/.nav-collapse -->
</div>
<!-- /.container -->
</div>
<!-- /.navbar-inner -->
</div>
<!-- /.navbar -->
jquery
html
twitter-bootstrap
Tim Vitor
fonte
fonte
Respostas:
tente isto:
fonte
Eu apenas replico os 2 atributos do
btn-navbar
(data-toggle="collapse" data-target=".nav-collapse.in"
) em cada link como este:Na barra de navegação do Bootstrap 4 ,
in
foi alterado para,show
portanto, a sintaxe seria:data-toggle="collapse" data-target=".navbar-collapse.show"
fonte
data-toggle
edata-target
<li> é uma solução mais limpa. Obrigado..in
to-the-alvo de dados:data-toggle="collapse" data-target=".nav-collapse.in"
fonte
.navbar-toggler
. Enfim, super código de trabalho, obrigado!Melhor usar os métodos padrão collapse.js ( documentos V3 , documentos V4 ):
fonte
.nav a
selector por este:.nav a:not(.dropdown-toggle)
.nav a
eu tive que usar.navbar a
.navbar-collapse
e não.nav-collapse
?.nav-collapse
foi usado no exemplo de código de pergunta.Ainda mais elegante, sem uma lambida de código duplicado, é simplesmente aplicar os atributos
data-toggle="collapse"
edata-target=".nav-collapse"
à própria navegação:Super limpo, sem a necessidade de JavaScript. Funciona muito bem, desde que seus
nav a
elementos tenham preenchimento suficiente para dedos gordos e você não impeça a ocorrência de eventos de cliquee.stopPropagation()
quando os usuários clicam nosnav a
itens.fonte
data-target=".nav-collapse.in"
<div class="collapse navbar-collapse" data-toggle="collapse" data-target=".navbar-collapse">
Atualize seu
para
Essa simples mudança funcionou para mim.
Ref: https://github.com/twbs/bootstrap/issues/9013
fonte
data-target=".navbar-collapse.in"
como no novo padrão de inicialização. A.in
classe é evitar a animação quando no desktopdiv.navbar-collapse
elemento comodata-target
parâmetro.A navegação deve ser fechada sempre que um usuário clicar em qualquer lugar do corpo - não apenas nos elementos de navegação. O menu Say está aberto, mas o usuário clica no corpo da página. O usuário espera ver o menu fechar.
Você também deve garantir que o botão de alternância esteja visível, caso contrário, um salto é visto no menu.
fonte
Testado no Bootstrap 3.3.6 - trabalho!
fonte
Tente isso> Bootstrap 3
Brilhante exatamente o que eu estava procurando, no entanto, tive alguns confrontos com o javascript e o modal de bootstrap, isso foi corrigido.
Espero que isto ajude.
fonte
Isto funcionou bem para mim. É o mesmo que a resposta aceita, mas corrige o problema relacionado à visualização de desktop / tablet
fonte
fonte
beforeShow
evento.Eu acho que é melhor usar os métodos collapse.js padrão do Bootstrap 3 usando o
.navbar-collapse
elemento como recolhível que você deseja ocultar, como mostrado abaixo.Outras soluções podem causar outros problemas indesejados na maneira como os elementos são exibidos ou funcionam em sua página da web. Portanto, embora algumas soluções pareçam corrigir o seu problema inicial, elas podem muito bem apresentar outras, portanto, execute um teste completo do seu site após qualquer correção.
Para ver este código em ação:
Felicidades!
Mostrar snippet de código
fonte
Em cada link suspenso, coloque data-toggle = "collapse" e data-target = ". Nav-collapse" em que nav-collapse é o nome que você atribui à lista suspensa.
Isso está funcionando perfeitamente na tela que possui uma lista suspensa, como telas móveis, mas no desktop e tablet ele cria um flickr. Isso ocorre porque a classe .collapsing é aplicada. Para remover o flickr, criei uma consulta de mídia e inseri o estouro oculto na classe em colapso.
fonte
Adicionar a tag data-toggle = "collapse" data-target = ". Navbar-collapse.in" à tag
<a>
funcionou para mim.fonte
Aqui está como eu fiz isso. Se houver uma maneira mais suave, por favor me diga.
Dentro das
<a>
tags onde estão os links para o menu, adicionei este código:Ele preserva a animação do slide. Portanto, em pleno uso, ficaria assim:
fonte
// NOTA Adicionei o "touchstart" para toque no celular. touchstart / end não tem atraso
fonte
Esta é a melhor solução que eu usei.
fonte
Para aqueles que notaram as barras de navegação da área de trabalho piscam ao usar esta solução:
Uma solução simples para esse problema é referenciar a barra de navegação recolhida apenas verificando a presença de 'in':
Isso reduz a barra de navegação ao clicar quando a barra de navegação está no modo móvel, mas deixa a versão para desktop em paz. Isso evita o tremor que muitas pessoas testemunharam nas versões para desktop.
Além disso, se você tiver uma barra de navegação com menus suspensos , não poderá vê-los, pois a barra de navegação ficará oculta assim que você clicar neles; portanto, se você tiver menus suspensos (como eu!), Use o seguinte:
Isso procura a presença da classe suspensa acima do link clicado no DOM; se existir, o link pretendia iniciar um menu suspenso e, consequentemente, o menu não fica oculto. Quando você clica em um link no menu suspenso, a barra de navegação é ocultada corretamente.
fonte
fonte
100% de trabalho: -
Adicionar em HTML
Javascript
fonte
Isso oculta o colapso da navegação em vez de animar, mas o mesmo conceito da resposta acima
JS:
HTML:
Prefiro isso em sites de página única porque uso o localScroll.js que já anima.
fonte
Visualização móvel: como ocultar a navegação de alternância no bootstrap + menu suspenso + jquery + scrollto com itens de navegação que apontam para âncoras / IDs na mesma página , modelo de uma página
O problema que eu estava experimentando com qualquer uma das soluções acima é que elas estão recolhendo apenas os itens do submenu, enquanto o menu de navegação não é recolhido.
Então eu fiz o meu pensamento .. e o que podemos observar? Bem, toda vez que nós / usuários clicamos em um link de rolagem para rolagem, queremos que a página role para essa posição e, simultaneamente, reduza o menu para restaurar a exibição da página.
Bem ... por que não atribuir esse trabalho às funções scrollto? Fácil :-)
Então nos dois códigos
e
Acabei de adicionar o mesmo comando nas duas funções
(parabéns a um dos colaboradores acima)
assim (o mesmo deve ser adicionado aos dois pergaminhos)
se você quiser vê-lo em ação, basta dar uma olhada nos dados de recuperação do NAS
fonte
Os usuários do Bootstrap3 tentam o código abaixo. Funcionou para mim.
fonte
O Bootstrap define uma
.in
classe no elemento Collapse para acionar a animação - para abri-la. Se você simplesmente remover a.in
classe, a animação não será executada, mas ocultará o elemento - não exatamente o que você deseja.Provavelmente, é mais rápido executar uma
if
instrução para verificar se a classe de auto-inicialização padrão.in
foi configurada no elementoPortanto, este código diz apenas:
fonte
Adicione um ID a cada
fonte
Outra solução rápida para o Bootstrap 3. * pode ser:
fonte
Publiquei uma solução que funciona com Aurelia aqui: https://stackoverflow.com/a/41465905/6466378
O problema é que você não pode apenas adicionar
data-toggle="collapse"
e adicionardata-target="#navbar"
aos seus elementos. E o jQuery não funciona em um ambiente Aurelia ou Angular.A melhor solução para mim foi criar um atributo personalizado que escute a consulta de mídia correspondente e adicione o
data-toggle="collapse"
atributo, se desejado:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
O atributo personalizado com Aurelia se parece com isso:
fonte
Estou no Bootstrap 4, usando o fullPage.js com uma navegação superior fixa e tentei tudo listado aqui, com resultados mistos.
Tentei da melhor maneira:
O menu entraria em colapso, mas os links href não levariam a lugar algum.
Tentei de outras maneiras lógicas:
Haveria algum comportamento estranho por causa do evento touchstart: os botões clicados não seriam os que eu realmente clicara, quebrando os links. Além disso, ele adicionaria a classe .show a outros menus suspensos não relacionados na minha navegação, causando coisas mais estranhas.
Nada daria certo.
Então, em vez disso, tive a (maravilhosa) idéia de fazer isso:
Eu já tinha coisas nessa função de troca de hash, e só precisava adicionar essa linha.
Na verdade, ele faz exatamente o que eu quero: recolher o menu quando o hash mudar (ou seja, um clique levando a outro lugar). O que é bom, porque agora posso ter links no meu menu que não serão recolhidos.
Quem sabe, talvez isso ajude alguém na minha situação!
E obrigado a todos que participaram desse tópico, muitas informações a serem aprendidas aqui.
fonte
Na maioria dos casos, você desejará chamar a função de alternância apenas se o botão de alternância estiver visível ...
fonte
O check-in do menu é aberto marcando a classe 'in' e, em seguida, execute o código.
funciona perfeitamente.
fonte