Este no es un menú desplegable de submenú, la categoría es de clase li como en la imagen:
Al seleccionar una categoría del menú receptivo (la plantilla es solo una página), quiero ocultar el colapso de navegación automáticamente al hacer clic. También pasee para usar como navegación, ya que la plantilla solo tiene una página. Busco una solución que no lo afecte, aquí está el código HTML del menú:
<!-- 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
fuente
fuente
Respuestas:
prueba esto:
fuente
Acabo de replicar los 2 atributos de
btn-navbar
(data-toggle="collapse" data-target=".nav-collapse.in"
) en cada enlace de esta manera:En la barra de navegación de Bootstrap 4 ,
in
ha cambiado a,show
por lo que la sintaxis sería:data-toggle="collapse" data-target=".navbar-collapse.show"
fuente
data-toggle
ydata-target
<li> es una solución más limpia. Gracias..in
al objetivo de datos:data-toggle="collapse" data-target=".nav-collapse.in"
fuente
.navbar-toggler
. De todos modos, super código de trabajo, gracias!Es mejor utilizar los métodos predeterminados collapse.js ( documentos V3 , documentos V4 ):
fuente
.nav a
selector por este:.nav a:not(.dropdown-toggle)
.nav a
tener que usar.navbar a
.navbar-collapse
y no.nav-collapse
?.nav-collapse
se usó en el ejemplo de código de pregunta.Aún más elegante sin una sola capa de código duplicado, es simplemente aplicar los atributos
data-toggle="collapse"
ydata-target=".nav-collapse"
al navegador en sí:Super limpio, no requiere JavaScript. Funciona muy bien, siempre y cuando tus
nav a
elementos tengan suficiente relleno para dedos gordos, y no evites que se produzca un evento de clice.stopPropagation()
cuando los usuarios hacen clic en losnav a
elementos.fuente
data-target=".nav-collapse.in"
<div class="collapse navbar-collapse" data-toggle="collapse" data-target=".navbar-collapse">
Actualiza tu
a
Este simple cambio funcionó para mí.
Ref: https://github.com/twbs/bootstrap/issues/9013
fuente
data-target=".navbar-collapse.in"
como con el nuevo estándar de arranque. La.in
clase es para evitar la animación en el escritoriodiv.navbar-collapse
elemento comodata-target
parámetro.La navegación debe cerrarse cada vez que un usuario hace clic en cualquier parte del cuerpo, no solo en los elementos de navegación. Dicho menú está abierto, pero el usuario hace clic en el cuerpo de la página. El usuario espera ver cerrar el menú.
También debe asegurarse de que el botón de alternar esté visible; de lo contrario, se verá un salto en el menú.
fuente
Probado en Bootstrap 3.3.6 - ¡trabajo!
fuente
Prueba esto> Bootstrap 3
Brillante exactamente lo que estaba buscando, sin embargo, tuve algunos conflictos con el Javascript y el modal de arranque, esto lo solucionó.
Espero que esto ayude.
fuente
Esto funcionó bien para mí. Es lo mismo que la respuesta aceptada, pero soluciona el problema relacionado con la vista de escritorio / tableta
fuente
fuente
beforeShow
evento.Creo que es mejor usar Bootstrap 3 por defecto métodos collapse.js de usando el
.navbar-collapse
elemento plegable que deseas ocultar como se muestra a continuación.Otras soluciones pueden causar otros problemas no deseados con la forma en que los elementos se muestran o funcionan en su página web. Por lo tanto, aunque algunas soluciones pueden parecer solucionar su problema inicial, es muy posible que presente otras, así que asegúrese de realizar pruebas exhaustivas de su sitio después de cualquier corrección.
Para ver este código en acción:
¡Salud!
Mostrar fragmento de código
fuente
En cada enlace desplegable, coloque data-toggle = "collapse" y data-target = ". Nav-collapse" donde nav-collapse es el nombre que le da a la lista desplegable.
Esto funciona perfectamente en la pantalla que tiene un menú desplegable como las pantallas móviles, pero en el escritorio y la tableta crea un flickr. Esto se debe a que se aplica la clase .collapsing. Para eliminar el flickr, creé una consulta de medios e inserté un desbordamiento oculto para la clase colapsada.
fuente
Agregar el data-toggle = "collapse" data-target = ". Navbar-collapse.in" a la etiqueta
<a>
funcionó para mí.fuente
Así es como lo hice. Si hay una manera más suave, por favor dígame.
Dentro de las
<a>
etiquetas donde están los enlaces para el menú, agregué este código:Conserva la animación de la diapositiva. Entonces, en pleno uso, se vería así:
fuente
// NOTA agregué el "touchstart" para dispositivos móviles. TouchStart / End no tiene retraso
fuente
Esta es la mejor solución que he usado.
fuente
Para aquellos que han notado que las barras de navegación del escritorio parpadean al usar esta solución:
Una solución simple a ese problema es hacer referencia a la barra de navegación contraída solo verificando la presencia de 'in':
Esto colapsa la barra de navegación al hacer clic cuando la barra de navegación está en modo móvil, pero dejará sola la versión de escritorio. Esto evita el parpadeo que muchas personas han presenciado en las versiones de escritorio.
Además, si tiene una barra de navegación con menús desplegables , no podrá verlos, ya que la barra de navegación se ocultará tan pronto como haga clic en ellos, así que si tiene menús desplegables (¡como yo!), Use lo siguiente:
Esto busca la presencia de la clase desplegable sobre el enlace en el que se hizo clic en el DOM; si existe, el enlace tenía la intención de iniciar un menú desplegable y, en consecuencia, el menú no está oculto. Cuando hace clic en un enlace dentro del menú desplegable, la barra de navegación se ocultará correctamente.
fuente
fuente
100% de trabajo: -
Agregar en HTML
Javascript
fuente
Esto oculta el colapso de navegación en lugar de animarlo, pero el mismo concepto que la respuesta anterior
JS:
HTML:
Prefiero esto en sitios de una sola página porque uso localScroll.js que ya anima.
fuente
Vista móvil: cómo ocultar la navegación de alternancia en bootstrap + menú desplegable + jquery + scrollto con elementos de navegación que apuntan a anclas / identificadores en la misma página , una plantilla de página
El problema que estaba experimentando con cualquiera de las soluciones anteriores era que colapsan solo los elementos del submenú, mientras que el menú de navegación no se colapsa.
Entonces hice mi pensamiento ... y ¿qué podemos observar? Bueno, cada vez que nosotros / los usuarios hacemos clic en un enlace de desplazamiento a, queremos que la página se desplace a esa posición y, al mismo tiempo, colapse el menú para restaurar la vista de la página.
Bueno ... ¿por qué no asignar este trabajo a las funciones scrollto? Fácil :-)
Entonces en los dos códigos
y
Acabo de agregar el mismo comando en ambas funciones
(Felicitaciones a uno de los contribuyentes anteriores)
así (lo mismo se debe agregar a los dos pergaminos)
si quieres verlo en acción solo échale un vistazo recupero dati da NAS
fuente
Los usuarios de Bootstrap3 prueban el siguiente código. A mí me funcionó.
fuente
Bootstrap establece una
.in
clase en el elemento Contraer para activar la animación, para abrirla. Si simplemente elimina la.in
clase, la animación no se ejecuta, pero ocultará el elemento, no exactamente lo que desea.Probablemente más rápido ejecutar una
if
instrucción para verificar si la clase de rutina de arranque predeterminada.in
se ha establecido en el elemento.Entonces este código solo dice:
fuente
Agregue una identificación a cada
fuente
Otra solución rápida para Bootstrap 3. * podría ser:
fuente
Publiqué una solución que funciona con Aurelia aquí: https://stackoverflow.com/a/41465905/6466378
El problema es que no puedes simplemente agregar
data-toggle="collapse"
ydata-target="#navbar"
a sus elementos a. Y jQuery no funciona en un entorno Aurelia o Angular.La mejor solución para mí fue crear un atributo personalizado que escuche la consulta de medios correspondiente y agregue el
data-toggle="collapse"
atributo si lo desea:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
El atributo personalizado con Aurelia se ve así:
fuente
Estoy en Bootstrap 4, usando fullPage.js con un navegador superior fijo, y probé todo lo que se enumera aquí, con resultados mixtos.
Intenté la mejor manera limpia:
El menú colapsaría, pero los enlaces href no llevarían a ninguna parte.
Probé las otras formas lógicas:
Habría un comportamiento extraño debido al evento de inicio táctil: los botones cliqueados terminarían no siendo los que realmente hice clic, por lo tanto, rompiendo los enlaces. Además, agregaría la clase .show a otras listas desplegables no relacionadas en mi navegador, lo que provocaría algunas cosas más extrañas.
Nada funcionaria.
Entonces, en cambio, tuve la (hasta ahora) maravillosa idea de hacer eso:
Ya tenía cosas en esa función hashchange, solo tenía que agregar esta línea.
Realmente hace exactamente lo que quiero: contraer el menú cuando cambia el hash (es decir, se ha producido un clic que lleva a otro lugar). Lo cual es bueno, porque ahora puedo tener enlaces en mi menú que no lo colapsarán.
Quién sabe, ¡quizás esto ayude a alguien en mi situación!
Y gracias a todos los que han participado en ese hilo, mucha información para aprender aquí.
fuente
En la mayoría de los casos, solo querrá llamar a la función de alternar si el botón de alternar está visible ...
fuente
Me registré en el menú se abre marcando 'en' la clase y luego ejecuto el código.
funciona perfectamente.
fuente