Mam ukryty DIV, który zawiera menu podobne do paska narzędzi.
Mam kilka DIV, które są włączone, aby pokazywać DIV menu, gdy kursor myszy nad nimi unosi się.
Czy jest wbudowana funkcja, która przeniesie menu DIV do prawego górnego rogu aktywnego DIV (najechanie myszą)? Szukam czegoś takiego$(menu).position("topright", targetEl);
Odpowiedzi:
UWAGA: Wymaga to interfejsu użytkownika jQuery (nie tylko jQuery).
Możesz teraz użyć:
Do szybkiego pozycjonowania ( jQuery UI / Position ).
Możesz pobrać jQuery UI tutaj .
źródło
tl; dr: (spróbuj tutaj )
Jeśli masz następujący kod HTML:
możesz użyć następującego kodu JavaScript:
Ale to nie działa!
Działa to tak długo, jak menu i symbol zastępczy mają ten sam element nadrzędny przesunięcia. Jeśli nie, i nie masz zagnieżdżonych reguł CSS, które dbają o to, gdzie w DOM
#menu
jest element, użyj:tuż przed linią pozycjonującą
#menu
element.Ale to wciąż nie działa!
Możesz mieć dziwny układ, który nie działa z tym podejściem. W takim przypadku wystarczy użyć wtyczki jQuery.ui (jak wspomniano w odpowiedzi poniżej), która obsługuje każdą możliwą sytuację . Pamiętaj, że będziesz musiał przejść
show()
do elementu menu przed wywołaniemposition({...})
; wtyczka nie może pozycjonować ukrytych elementów.Aktualizuj uwagi 3 lata później w 2012 roku:
(Oryginalne rozwiązanie jest tutaj archiwizowane dla potomności)
Okazuje się więc, że oryginalna metoda, którą tu zastosowałem, była daleka od ideału. W szczególności upadłby, gdyby:
Na szczęście jQuery wprowadził metody (
position()
iouterWidth()
) już w 1.2.6, które znacznie ułatwiają znalezienie właściwych wartości w tym drugim przypadku. W pierwszym przypadkuappend
wstawienie elementu menu do symbolu zastępczego działa (ale złamie reguły CSS oparte na zagnieżdżaniu).źródło
To w końcu działało dla mnie.
źródło
Oto napisana przeze mnie funkcja jQuery, która pomaga mi pozycjonować elementy.
Oto przykładowe użycie:
Powyższy kod wyrównuje prawy dolny # el1 z prawym górnym # el2. ['cc', 'cc'] wyśrodkowuje # el1 w # el2. Upewnij się, że # el1 ma css pozycji: absolut i indeks Z: 10000 (lub jakąś naprawdę dużą liczbę), aby utrzymać go na szczycie.
Opcja przesunięcia pozwala przesuwać współrzędne o określoną liczbę pikseli.
Kod źródłowy jest poniżej:
źródło
Po co komplikować za dużo? Rozwiązanie jest bardzo proste
css:
jquery:
Działa nawet jeśli
źródło
Możesz użyć wtyczki jQuery PositionCalculator
Ta wtyczka zawiera również obsługę kolizji (odwracanie), dzięki czemu menu podobne do paska narzędzi można umieścić w widocznym miejscu.
dla tego znacznika:
Oto skrzypce: http://jsfiddle.net/QrrpB/1657/
źródło
Coś takiego?
źródło
To działa dla mnie:
źródło