OK, donc ce dont j'ai besoin est assez simple.
J'ai mis en place une barre de navigation avec des menus déroulants (en utilisant class="dropdown-toggle" data-toggle="dropdown"
), et cela fonctionne très bien.
Le truc, c'est que ça marche " onClick
", alors que je préférerais que ça marche " onHover
".
Existe-t-il un moyen intégré de le faire?
javascript
jquery
html
css
twitter-bootstrap
Dr Kameleon
la source
la source
Réponses:
La solution la plus simple serait en CSS. Ajoutez quelque chose comme ...
Violon de travail
la source
data-toggle
attribut pour rendre l'élément parent cliquable ... Il suffit de faire attention aux dommages collatéraux sur les écrans mobiles.La meilleure façon de le faire est de simplement déclencher l'événement de clic de bootstraps avec un survol. De cette façon, il devrait toujours rester convivial pour les appareils tactiles
la source
Vous pouvez utiliser la fonction de survol de jQuery.
Il vous suffit d'ajouter la classe
open
lorsque la souris entre et de supprimer la classe lorsque la souris quitte la liste déroulante.Voici mon code:
la source
show
place deopen
, et également inclure ledropdown-menu
:$('.dropdown').hover(function() { $(this).addClass('show'); $(this).find('.dropdown-menu').addClass('show');}, function() {$(this).removeClass('show'); $(this).find('.dropdown-menu').removeClass('show');});
(Désolé pour le formatage.)Un moyen simple, en utilisant jQuery, est le suivant:
la source
.first()
-$(this).find('.dropdown-menu').first().stop(true, true).delay(200).fadeIn(200);
...Pour CSS, cela devient fou lorsque vous cliquez également dessus. C'est le code que j'utilise, cela ne change rien non plus pour la vue mobile.
la source
Dans Twitter, Bootstrap n'est pas implémenté mais vous pouvez utiliser ce plugin
Mise à jour 1:
Même question ici
la source
Survolez les éléments de navigation pour voir qu'ils s'activent en survol. http://cameronspear.com/demos/twitter-bootstrap-hover-dropdown/#
la source
Donc vous avez ce code:
Normalement, cela fonctionne sur l'événement de clic, et vous voulez qu'il fonctionne sur l'événement de survol. C'est très simple, utilisez simplement ce code javascript / jquery:
Cela fonctionne très bien et voici l'explication: nous avons un bouton et un menu. Lorsque nous survolons le bouton, nous affichons le menu, et lorsque nous quittons le bouton, nous masquons le menu après 100 ms. Si vous vous demandez pourquoi j'utilise cela, c'est parce que vous avez besoin de temps pour faire glisser le curseur du bouton sur le menu. Lorsque vous êtes dans le menu, l'heure est réinitialisée et vous pouvez y rester autant de fois que vous le souhaitez. Lorsque vous quittez le menu, nous masquerons le menu instantanément sans aucun délai.
J'ai utilisé ce code dans de nombreux projets, si vous rencontrez un problème lors de son utilisation, n'hésitez pas à me poser des questions.
la source
C'est ce que j'utilise pour faire une liste déroulante en survol avec du jQuery
la source
Essayez ceci en utilisant la fonction de survol avec des animations de fondu en fondu
la source
Cela vous aidera à créer votre propre classe de survol pour bootstrap:
CSS:
Les marges sont définies pour éviter la fermeture indésirable et elles sont facultatives.
HTML:
N'oubliez pas de supprimer l'attribut de bouton data-toggle = "dropdown" si vous souhaitez supprimer un clic ouvert, et cela fonctionnera également lorsque l'entrée est ajoutée avec une liste déroulante.
la source
Cela ne fait que survoler la barre de navigation lorsque vous n'êtes pas sur un appareil mobile, car je trouve que le survol de la navigation ne fonctionne pas bien sur les appareils mobiles:
la source
J'essaie d'autres solutions, j'utilise bootstrap 3, mais le menu déroulant se ferme trop rapidement pour passer dessus
supposé que vous ajoutiez class = "dropdown" à li, j'ai ajouté un timeout
la source
Mis à jour avec un plugin approprié
J'ai publié un plugin approprié pour la fonctionnalité de survol de la liste déroulante, dans lequel vous pouvez même définir ce qui se passe lorsque vous cliquez sur l'
dropdown-toggle
élément:https://github.com/istvan-ujjmeszaros/bootstrap-dropdown-hover
Pourquoi je l'ai fait, alors qu'il y a déjà beaucoup de solutions?
J'ai eu des problèmes avec toutes les solutions existantes. Les CSS simples n'utilisent pas la
.open
classe sur le.dropdown
, il n'y aura donc aucun retour sur l'élément bascule de la liste déroulante lorsque la liste déroulante est visible.Les js interfèrent avec le clic sur
.dropdown-toggle
, de sorte que la liste déroulante apparaît en survol, puis la masque lorsque vous cliquez sur une liste déroulante ouverte, et le déplacement de la souris déclenchera la liste déroulante pour réapparaître. Certaines des solutions js freinent la compatibilité iOS, certains plugins ne fonctionnent pas sur les navigateurs de bureau modernes qui prennent en charge les événements tactiles.C'est pourquoi j'ai créé le plugin Bootstrap Dropdown Hover qui évite tous ces problèmes en utilisant uniquement l'API javascript Bootstrap standard, sans aucun hack.
la source
la source
Le déclenchement d'un
click
événement avec unhover
a une petite erreur. Simouse-in
et puis aclick
crée un effet vice-versa. C'estopens
quandmouse-out
etclose
quandmouse-in
. Une meilleure solution:la source
html
jquery
codepen
la source
La solution que je propose détecte si son appareil n'est pas tactile et que le
navbar-toggle
(menu hamburger) n'est pas visible et rend l'élément de menu parent révélant le sous-menu au survol et et suit son lien au clic .Rend également la marge supérieure à 0 car l'écart entre la barre de navigation et le menu dans certains navigateurs ne vous permettra pas de survoler les sous-éléments
la source
Liste déroulante Bootstrap Travaillez au survol, et restez fermé au clic en ajoutant la propriété display: block; en css et en supprimant ces attributs data-toggle = "dropdown" role = "button" de la balise button
la source