Tengo un DIV oculto que contiene un menú similar a una barra de herramientas.
Tengo varios DIV que están habilitados para mostrar el menú DIV cuando el mouse se desplaza sobre ellos.
¿Existe una función incorporada que moverá el menú DIV a la parte superior derecha del DIV activo (desplazamiento del mouse)? Estoy buscando algo como$(menu).position("topright", targetEl);
Respuestas:
NOTA: Esto requiere jQuery UI (no solo jQuery).
Ahora puedes usar:
Para posicionamiento rápido ( jQuery UI / Position ).
Puede descargar jQuery UI aquí .
fuente
tl; dr: (pruébalo aquí )
Si tiene el siguiente HTML:
entonces puede usar el siguiente código JavaScript:
¡Pero no funciona!
Esto funcionará siempre que el menú y el marcador de posición tengan el mismo desplazamiento principal. Si no lo hacen, y no tiene reglas CSS anidadas que se preocupan por el
#menu
elemento DOM , use:justo antes de la línea que posiciona el
#menu
elemento.¡Pero todavía no funciona!
Es posible que tenga un diseño extraño que no funciona con este enfoque. En ese caso, solo use el complemento de posición de jQuery.ui (como se menciona en una respuesta a continuación), que maneja cada eventualidad concebible. Tenga en cuenta que tendrá que ir
show()
al elemento del menú antes de llamarposition({...})
; El complemento no puede colocar elementos ocultos.Notas de actualización 3 años después en 2012:
(La solución original se archiva aquí para la posteridad)
Entonces, resulta que el método original que tenía aquí estaba lejos de ser ideal. En particular, fallaría si:
Afortunadamente, jQuery introdujo métodos (
position()
youterWidth()
) en 1.2.6 que hacen que encontrar los valores correctos en este último caso sea mucho más fácil. Para el caso anterior, funcionaappend
el elemento de menú para el marcador de posición funciona (pero romperá las reglas CSS basadas en el anidamiento).fuente
Esto es lo que funcionó para mí al final.
fuente
Aquí hay una función jQuery que escribí que me ayuda a posicionar elementos.
Aquí hay un ejemplo de uso:
El código anterior alinea la esquina inferior derecha de # el1 con la esquina superior derecha de # el2. ['cc', 'cc'] centraría # el1 en # el2. Asegúrese de que # el1 tenga el css de posición: absoluto e índice z: 10000 (o algún número realmente grande) para mantenerlo en la parte superior.
La opción de desplazamiento le permite empujar las coordenadas por un número específico de píxeles.
El código fuente está abajo:
fuente
¿Por qué complicarse demasiado? La solución es muy simple.
css:
jquery:
Funciona incluso si,
fuente
Puede usar el plugin jQuery PositionCalculator
Ese complemento también ha incluido el manejo de colisiones (flip), por lo que el menú tipo barra de herramientas se puede colocar en una posición visible.
para ese marcado:
Aquí está el violín: http://jsfiddle.net/QrrpB/1657/
fuente
¿Algo como esto?
fuente
Esto funciona para mi:
fuente