J'ai une DIV cachée qui contient un menu de type barre d'outils.
J'ai un certain nombre de DIVs qui sont activés pour afficher le menu DIV lorsque la souris les survole.
Existe-t-il une fonction intégrée qui déplace le menu DIV en haut à droite du DIV actif (survol de la souris)? Je cherche quelque chose comme$(menu).position("topright", targetEl);
Réponses:
REMARQUE: cela nécessite jQuery UI (pas seulement jQuery).
Vous pouvez maintenant utiliser:
Pour un positionnement rapide ( jQuery UI / Position ).
Vous pouvez télécharger jQuery UI ici .
la source
tl; dr: (essayez-le ici )
Si vous avez le code HTML suivant:
alors vous pouvez utiliser le code JavaScript suivant:
Mais ça ne marche pas!
Cela fonctionnera tant que le menu et l'espace réservé auront le même parent de décalage. Si ce n'est pas le cas et que vous n'avez pas de règles CSS imbriquées qui se soucient de l'endroit où se trouve l'
#menu
élément DOM , utilisez:juste avant la ligne qui positionne l'
#menu
élément.Mais ça ne marche toujours pas!
Vous pourriez avoir une disposition étrange qui ne fonctionne pas avec cette approche. Dans ce cas, utilisez simplement le plugin de position de jQuery.ui (comme mentionné dans une réponse ci-dessous), qui gère toutes les éventualités imaginables. Notez que vous devrez
show()
l'élément de menu avant d'appelerposition({...})
; le plugin ne peut pas positionner les éléments cachés.Notes de mise à jour 3 ans plus tard en 2012:
(La solution originale est archivée ici pour la postérité)
Il s'avère donc que la méthode originale que j'avais ici était loin d'être idéale. En particulier, il échouerait si:
Heureusement, jQuery a introduit des méthodes (
position()
etouterWidth()
) depuis 1.2.6 qui facilitent beaucoup la recherche des bonnes valeurs dans ce dernier cas. Dans le premier cas,append
l'élément de menu dans l'espace réservé fonctionne (mais enfreindra les règles CSS basées sur l'imbrication).la source
C'est ce qui a finalement fonctionné pour moi.
la source
Voici une fonction jQuery que j'ai écrite qui m'aide à positionner les éléments.
Voici un exemple d'utilisation:
Le code ci-dessus aligne le coin inférieur droit de # el1 avec le coin supérieur droit de # el2. ['cc', 'cc'] centrerait # el1 dans # el2. Assurez-vous que # el1 a le CSS de position: absolu et z-index: 10000 (ou un très grand nombre) pour le garder en haut.
L'option de décalage vous permet de déplacer les coordonnées d'un nombre spécifié de pixels.
Le code source est ci-dessous:
la source
Pourquoi trop compliquer? La solution est très simple
css:
jquery:
Cela fonctionne même si,
la source
Vous pouvez utiliser le plugin jQuery PositionCalculator
Ce plugin a également inclus la gestion des collisions (flip), de sorte que le menu de type barre d'outils peut être placé à une position visible.
pour ce balisage:
Voici le violon: http://jsfiddle.net/QrrpB/1657/
la source
Quelque chose comme ça?
la source
Cela fonctionne pour moi:
la source