J'essayais de créer un sous-menu de démarrage Twitter dans le menu déroulant, mais j'ai un problème: j'ai un menu déroulant dans le coin supérieur droit de la page et ce menu a un sous-menu supplémentaire. Cependant, lorsque le sous-menu s'ouvre, il ne rentre pas dans la fenêtre et va trop vers la droite, de sorte que l'utilisateur ne peut voir que les premières lettres. Comment faire en sorte que ce sous-menu ne s'ouvre pas à droite, mais à gauche?
javascript
jquery
css
twitter-bootstrap
kovpack
la source
la source
.pull-right
le.dropdown
conteneur.Réponses:
Le moyen le plus simple serait d'ajouter la
pull-left
classe à votredropdown-submenu
jsfiddle: DEMO
la source
.dropdown-submenu.pull-left>.dropdown-menu { width: 100%; }
Pas une solution élégante, mais semble fonctionner jsfiddle.net/r1v90tasSi j'ai bien compris, bootstrap fournit une classe CSS pour ce cas précis. Ajoutez 'pull-right' au menu 'ul':
..et le résultat final est que les options de menu apparaissent alignées à droite, en ligne avec le bouton à partir duquel elles se déroulent.
la source
pull-right
classe pour y parvenir.La classe actuelle
.dropdown-submenu > .dropdown-menu
aleft: 100%;
. Donc, si vous souhaitez ouvrir le sous-menu sur le côté gauche, remplacez ces paramètres en position négative à gauche. Par exempleleft: -95%;
. Vous obtiendrez maintenant un sous-menu sur le côté gauche et vous pourrez modifier d'autres paramètres pour obtenir un aperçu parfait.Voici DEMO
EDIT: La question et ma réponse d'OP datent d'août 2012. Pendant ce temps, Bootstrap a changé, donc maintenant vous avez la classe .pull-left. À l'époque, ma réponse était correcte. Vous n'avez plus besoin de définir manuellement css, vous avez cette classe .pull-left.
EDIT 2: Les démos ne fonctionnent pas, car Bootstrap a changé leur URL. Changez simplement les ressources externes dans jsfiddle et remplacez-les par de nouvelles.
la source
left: -90%;
(sinon, je ne peux pas déplacer ma souris vers ce sous-menu, car il disparaît).Si vous utilisez bootstrap v4, il existe une nouvelle façon de le faire.
Vous devez utiliser
.dropdown-menu-right
sur l'.dropdown-menu
élément.Lien vers le code: https://getbootstrap.com/docs/4.0/components/dropdowns/#menu-items
la source
dropleft
etdropright
mais le contexte de la réponse est correct. Merci!La bonne façon de faire la tâche est:
la source
.dropdown-submenu { position: relative; text-align:right; }
Pour positionner le texte vers la droite lorsque la flèche est vers la gauche.J'ai créé une fonction javascript qui regarde s'il a suffisamment d'espace sur le côté droit. Si c'est le cas, il l'affichera sur le côté droit, sinon il l'affichera sur le côté gauche
Testé en:
Javascript:
parce que je ne veux pas ajouter ce correctif sur tous les éléments de menu, j'ai créé une nouvelle classe dessus. placez le menu fixe sur ul:
J'espère que cela fonctionne pour vous.
ps. petit bug dans safari et chrome, le premier survol le placera à mutch à gauche mettra à jour ce post si je l'ai corrigé.
la source
Si vous n'avez qu'un seul niveau et que vous utilisez bootstrap 3, ajoutez
pull-right
à l'ul
élémentla source
En fait - si vous êtes d'accord pour faire flotter le
dropdown
wrapper - j'ai trouvé que c'était aussi simple que de l'ajouternavbar-right
au fichierdropdown
.Cela ressemble à de la triche, car ce n'est pas dans une barre de navigation, mais cela fonctionne bien pour moi.
Vous pouvez ensuite personnaliser davantage le flottant avec un
pull-left
directement dans ledropdown
...... ou comme emballage autour d'elle ...
la source
Si vous utilisez LESS CSS, j'ai écrit un petit mixin pour déplacer la liste déroulante avec la flèche de connexion:
Ensuite, pour déplacer un
.dropdown-menu
avec un identifiant dedropdown-menu-x
par exemple, vous pouvez faire:la source
J'ai créé une fonction javascript qui regarde s'il a suffisamment d'espace sur le côté droit. Si c'est le cas, il l'affichera sur le côté droit, sinon il l'affichera sur le côté gauche. Encore une fois, s'il a suffisamment d'espace sur le côté droit, il affichera le côté droit. c'est une boucle ...
});
la source
Utilisez-vous la dernière version de bootstrap? J'ai adapté le code HTML de l'exemple de mise en page fluide comme indiqué ci-dessous. J'ai ajouté une liste déroulante et l'ai placée le plus à droite en ajoutant la
pull-right
classe. Lorsque vous survolez le menu déroulant, il est automatiquement tiré vers la gauche et rien n'est caché - tout le texte du menu est visible. Je n'ai utilisé aucun css personnalisé.la source
La seule chose que tu as à faire est
du menu que vous souhaitez afficher sur le côté DROIT.
la source