Eu tenho um DIV oculto que contém um menu semelhante à barra de ferramentas.
Eu tenho um número de DIVs que estão habilitados para mostrar o menu DIV quando o mouse passa sobre eles.
Existe uma função interna que moverá o menu DIV para o canto superior direito do DIV ativo (mouse em movimento)? Estou procurando algo como$(menu).position("topright", targetEl);
Respostas:
NOTA: Isso requer a interface do usuário do jQuery (não apenas o jQuery).
Agora você pode usar:
Para posicionamento rápido ( jQuery UI / Position ).
Você pode baixar a interface do usuário do jQuery aqui .
fonte
tl; dr: (experimente aqui )
Se você possui o seguinte HTML:
então você pode usar o seguinte código JavaScript:
Mas isso não funciona!
Isso funcionará desde que o menu e o espaço reservado tenham o mesmo pai de deslocamento. Se não, e você não possui regras CSS aninhadas que importam onde
#menu
está o elemento DOM , use:logo antes da linha que posiciona o
#menu
elemento.Mas ainda não funciona!
Você pode ter um layout estranho que não funciona com essa abordagem. Nesse caso, basta usar o plug-in de posição do jQuery.ui (como mencionado na resposta abaixo), que lida com todas as eventualidades possíveis. Observe que você precisará
show()
do elemento de menu antes de chamarposition({...})
; o plug-in não pode posicionar elementos ocultos.Notas da atualização 3 anos depois em 2012:
(A solução original está arquivada aqui para posteridade)
Então, o método original que eu tinha aqui estava longe de ser o ideal. Em particular, falharia se:
Felizmente, o jQuery introduziu métodos (
position()
eouterWidth()
) na versão 1.2.6, que tornam muito mais fácil encontrar os valores corretos no último caso. No primeiro caso, aappend
inserção do elemento de menu no espaço reservado funciona (mas quebrará as regras CSS com base no aninhamento).fonte
Isto é o que funcionou para mim no final.
fonte
Aqui está uma função jQuery que escrevi que me ajuda a posicionar elementos.
Aqui está um exemplo de uso:
O código acima alinha o canto inferior direito de # el1 com o canto superior direito de # el2. ['cc', 'cc'] centralizaria # el1 em # el2. Certifique-se de que # el1 tenha o css de position: absolute e z-index: 10000 (ou algum número realmente grande) para mantê-lo no topo.
A opção de deslocamento permite que você desloque as coordenadas por um número especificado de pixels.
O código fonte está abaixo:
fonte
Por que complicar demais? A solução é muito simples
css:
jquery:
Funciona mesmo se,
fonte
Você pode usar o plugin jQuery PositionCalculator
Esse plug-in também incluiu manipulação de colisão (flip), para que o menu semelhante à barra de ferramentas possa ser colocado em uma posição visível.
para essa marcação:
Aqui está o violino: http://jsfiddle.net/QrrpB/1657/
fonte
Algo assim?
fonte
Isso funciona para mim:
fonte