Ce n'est pas une liste déroulante de sous-menu, la catégorie est de classe li comme dans l'image:
En sélectionnant une catégorie dans le menu réactif (le modèle est juste une page), je souhaite masquer automatiquement la réduction de la navigation lorsque vous cliquez. Promenez-vous également pour l'utiliser comme navigation, car le modèle n'a qu'une page. Je cherche une solution qui ne l'affecte pas, voici le code HTML du 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
la source
la source
Réponses:
essaye ça:
la source
Je réplique simplement les 2 attributs du
btn-navbar
(data-toggle="collapse" data-target=".nav-collapse.in"
) sur chaque lien comme ceci:Dans la barre de navigation Bootstrap 4 ,
in
a été modifiée pourshow
que la syntaxe soit:data-toggle="collapse" data-target=".navbar-collapse.show"
la source
data-toggle
etdata-target
à <li> est une solution plus propre. Merci..in
à la cible de données:data-toggle="collapse" data-target=".nav-collapse.in"
la source
.navbar-toggler
. Quoi qu'il en soit, un code super fonctionnel, merci!Mieux vaut utiliser des méthodes par défaut collapse.js ( V3 docs , V4 docs ):
la source
.nav a
sélecteur par celui-ci:.nav a:not(.dropdown-toggle)
.nav a
je devais utiliser.navbar a
.navbar-collapse
pas dire et non.nav-collapse
?.nav-collapse
été utilisé dans l'exemple de code de question.Encore plus élégant sans une couche de code dupliqué, il suffit d'appliquer les attributs
data-toggle="collapse"
etdata-target=".nav-collapse"
à la navigation elle-même:Super propre, aucun JavaScript requis. Fonctionne très bien, tant que vos
nav a
éléments ont suffisamment de rembourrage pour les gros doigts et que vous n'empêchez pas l'événement de clic de bouillonnere.stopPropagation()
lorsque les utilisateurs cliquent sur desnav a
éléments.la source
data-target=".nav-collapse.in"
<div class="collapse navbar-collapse" data-toggle="collapse" data-target=".navbar-collapse">
Mettez à jour votre
à
Ce simple changement a fonctionné pour moi.
Réf: https://github.com/twbs/bootstrap/issues/9013
la source
data-target=".navbar-collapse.in"
comme avec le nouveau standard bootstrap. La.in
classe est d'empêcher l'animation sur le bureaudiv.navbar-collapse
élément commedata-target
paramètre.La navigation doit être fermée chaque fois qu'un utilisateur clique n'importe où sur le corps - pas seulement sur des éléments de navigation. Dites que le menu est ouvert, mais que l'utilisateur clique dans le corps de la page. L'utilisateur s'attend à voir le menu se fermer.
Vous devez également vous assurer que le bouton bascule est visible, sinon un saut est vu dans le menu.
la source
Testé sur Bootstrap 3.3.6 - ça marche!
la source
Essayez ceci> Bootstrap 3
Brillant exactement ce que je cherchais, mais j'ai eu quelques conflits avec le javascript et le modal bootstrap, cela l'a corrigé.
J'espère que cela t'aides.
la source
Cela a bien fonctionné pour moi. C'est la même chose que la réponse acceptée mais corrige le problème lié à la vue du bureau / tablette
la source
la source
beforeShow
événement.Je pense qu'il est préférable d'utiliser les méthodes collapse.js par défaut de Bootstrap 3 en utilisant le
.navbar-collapse
comme élément pliable que vous souhaitez masquer, comme indiqué ci-dessous.D'autres solutions peuvent entraîner d'autres problèmes indésirables avec la façon dont les éléments s'affichent ou fonctionnent dans votre page Web. Par conséquent, même si certaines solutions peuvent sembler résoudre votre problème initial, elles peuvent très bien en introduire d'autres, alors assurez-vous d'exécuter des tests approfondis de votre site après toute correction.
Pour voir ce code en action:
À votre santé!
Afficher l'extrait de code
la source
Sur chaque lien déroulant, placez data-toggle = "collapse" et data-target = ". Nav-collapse" où nav-collapse est le nom que vous lui donnez dans la liste déroulante.
Cela fonctionne parfaitement sur les écrans dotés d'une liste déroulante comme les écrans mobiles, mais sur les ordinateurs de bureau et les tablettes, cela crée un flickr. C'est parce que la classe .collapsing est appliquée. Pour supprimer le flickr, j'ai créé une requête multimédia et inséré un débordement caché dans la classe de réduction.
la source
L'ajout de data-toggle = "collapse" data-target = ". Navbar-collapse.in" à la balise a
<a>
fonctionné pour moi.la source
Voici comment je l'ai fait. S'il existe un moyen plus simple, veuillez me le dire.
À l'intérieur des
<a>
balises où se trouvent les liens du menu, j'ai ajouté ce code:Il préserve l'animation de la diapositive. Donc, en pleine utilisation, cela ressemblerait à ceci:
la source
// NOTE J'ai ajouté le "touchstart" pour mobile touch. touchstart / end n'a pas de retard
la source
C'est la meilleure solution que j'ai utilisée.
la source
Pour ceux qui ont remarqué que les barres de navigation du bureau scintillent lors de l'utilisation de cette solution:
Une solution simple à ce problème consiste à référencer la barre de navigation réduite uniquement en vérifiant la présence de 'in':
Cela réduit la barre de navigation au clic lorsque la barre de navigation est en mode mobile, mais laisse seule la version de bureau. Cela évite le scintillement dont de nombreuses personnes ont été témoins sur les versions de bureau.
De plus, si vous avez une barre de navigation avec des menus déroulants, vous ne pourrez pas les voir car la barre de navigation sera masquée dès que vous cliquez dessus, donc si vous avez des menus déroulants (comme moi!), Utilisez ce qui suit:
Cela recherche la présence de la classe déroulante au-dessus du lien sur lequel on a cliqué dans le DOM, si elle existe, alors le lien avait l'intention de lancer un menu déroulant et par conséquent le menu n'est pas masqué. Lorsque vous cliquez sur un lien dans le menu déroulant, la barre de navigation se masque correctement.
la source
la source
100% fonctionnant: -
Ajouter du HTML
Javascript
la source
Cela masque l'effondrement de la navigation au lieu de l'animer mais le même concept que la réponse ci-dessus
JS:
HTML:
Je préfère cela sur les sites à page unique car j'utilise localScroll.js qui anime déjà.
la source
Vue mobile: comment masquer la navigation à bascule dans bootstrap + dropdown + jquery + scrollto avec des éléments de navigation qui pointent vers des ancres / identifiants sur la même page , un modèle de page
Le problème que j'expérimentais avec l'une des solutions ci-dessus était qu'elles ne réduisent que les éléments du sous-menu, tandis que le menu de navigation ne se réduit pas.
Alors j'ai fait ma pensée .. et que pouvons-nous observer? Eh bien, chaque fois que nous / les utilisateurs cliquons sur un lien de défilement, nous voulons que la page défile jusqu'à cette position et simultanément, réduisons le menu pour restaurer la vue de la page.
Eh bien ... pourquoi ne pas attribuer ce travail aux fonctions scrollto? Facile :-)
Donc dans les deux codes
et
Je viens d'ajouter la même commande dans les deux fonctions
(bravo à l'un des contributeurs ci-dessus)
comme ça (le même devrait être ajouté aux deux parchemins)
si vous voulez le voir en action, vérifiez-le simplement recupero dati da NAS
la source
Les utilisateurs de Bootstrap3 essaient le code ci-dessous. Cela a fonctionné pour moi.
la source
Bootstrap définit une
.in
classe sur l'élément Collapse pour déclencher l'animation - pour l'ouvrir. Si vous supprimez simplement la.in
classe, l'animation ne s'exécute pas, mais masquera l'élément - pas exactement ce que vous voulez.Probablement plus rapide d'exécuter une
if
instruction pour vérifier si la classe d'amorçage par défaut.in
a été définie sur l'élément.Donc, ce code dit simplement:
la source
Ajoutez ensuite un identifiant à chacun
la source
Une autre solution rapide pour Bootstrap 3. * pourrait être:
la source
J'ai publié une solution qui fonctionne avec Aurelia ici: https://stackoverflow.com/a/41465905/6466378
Le problème est que vous ne pouvez pas simplement ajouter
data-toggle="collapse"
etdata-target="#navbar"
à vos éléments. Et jQuery ne fonctionne pas dans un environnement Aurelia ou Angular.La meilleure solution pour moi était de créer un attribut personnalisé qui écoute la requête multimédia correspondante et ajoute l'
data-toggle="collapse"
attribut si vous le souhaitez:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
L'attribut personnalisé avec Aurelia ressemble à ceci:
la source
Je suis sur Bootstrap 4, en utilisant fullPage.js avec une navigation supérieure fixe, et j'ai essayé tout ce qui est répertorié ici, avec des résultats mitigés.
J'ai essayé la meilleure façon propre:
Le menu s'effondrerait, mais les liens href ne mèneraient nulle part.
J'ai essayé les autres moyens logiques:
Il y aurait un comportement étrange à cause de l'événement touchstart: les boutons cliqués ne seraient pas ceux sur lesquels j'ai cliqué, d'où la rupture des liens. De plus, cela ajouterait la classe .show à d'autres listes déroulantes sans rapport avec ma navigation, provoquant des trucs plus étranges.
Rien ne marcherait.
Donc, à la place, j'ai eu la (jusqu'à présent) merveilleuse idée de faire ça:
J'avais déjà des choses dans cette fonction de hachage, si je devais juste ajouter cette ligne.
En fait, il fait exactement ce que je veux: réduire le menu lorsque le hachage change (c'est-à-dire qu'un clic menant ailleurs s'est produit). Ce qui est bien, car je peux maintenant avoir des liens dans mon menu qui ne le réduiront pas.
Qui sait, peut-être que cela aidera quelqu'un dans ma situation!
Et merci à tous ceux qui ont participé à ce fil, plein d'informations à apprendre ici.
la source
Dans la plupart des cas, vous ne voudrez appeler la fonction bascule que si le bouton bascule est visible ...
la source
J'ai vérifié dans le menu est ouvert en vérifiant la classe «dans», puis exécutez le code.
fonctionne parfaitement.
la source