Ich habe einen versteckten DIV, der ein Symbolleisten-ähnliches Menü enthält.
Ich habe eine Reihe von DIVs, die aktiviert sind, um das Menü DIV anzuzeigen, wenn die Maus darüber bewegt wird.
Gibt es eine eingebaute Funktion, mit der das Menü DIV oben rechts neben dem aktiven DIV (Mauszeiger) verschoben wird? Ich suche so etwas wie$(menu).position("topright", targetEl);
Antworten:
HINWEIS: Dies erfordert eine jQuery-Benutzeroberfläche (nicht nur jQuery).
Sie können jetzt verwenden:
Zur schnellen Positionierung ( jQuery UI / Position ).
Sie können die jQuery-Benutzeroberfläche hier herunterladen .
quelle
tl; dr: (versuche es hier )
Wenn Sie folgenden HTML-Code haben:
Dann können Sie den folgenden JavaScript-Code verwenden:
Aber es funktioniert nicht!
Dies funktioniert so lange, wie das Menü und der Platzhalter denselben übergeordneten Versatz haben. Wenn dies nicht der Fall
#menu
ist und Sie keine verschachtelten CSS-Regeln haben, die sich darum kümmern, wo sich das Element im DOM befindet, verwenden Sie:kurz vor der Linie, die das
#menu
Element positioniert .Aber es funktioniert immer noch nicht!
Möglicherweise haben Sie ein seltsames Layout, das mit diesem Ansatz nicht funktioniert. Verwenden Sie in diesem Fall einfach das Positions-Plugin von jQuery.ui (wie in einer Antwort unten erwähnt), das alle denkbaren Eventualitäten behandelt. Beachten Sie, dass Sie
show()
vor dem Aufruf das Menüelement aufrufen müssenposition({...})
. Das Plugin kann keine versteckten Elemente positionieren.Update Notizen 3 Jahre später im Jahr 2012:
(Die ursprüngliche Lösung ist hier für die Nachwelt archiviert )
Es stellt sich also heraus, dass die ursprüngliche Methode, die ich hier hatte, alles andere als ideal war. Insbesondere würde es scheitern, wenn:
Glücklicherweise hat jQuery bereits in 1.2.6 Methoden (
position()
undouterWidth()
) eingeführt, die es im letzteren Fall viel einfacher machen, die richtigen Werte zu finden. Im ersteren Fallappend
funktioniert das Einfügen des Menüelements in den Platzhalter (verstößt jedoch gegen CSS-Regeln, die auf der Verschachtelung basieren).quelle
Das hat am Ende für mich funktioniert.
quelle
Hier ist eine von mir geschriebene jQuery-Funktion, mit der ich Elemente positionieren kann.
Hier ist ein Anwendungsbeispiel:
Der obige Code richtet die untere rechte Seite von # el1 an der oberen rechten Seite von # el2 aus. ['cc', 'cc'] würde # el1 in # el2 zentrieren. Stellen Sie sicher, dass # el1 das CSS der Position: Absolut und Z-Index: 10000 (oder eine wirklich große Zahl) hat, um es oben zu halten.
Mit der Versatzoption können Sie die Koordinaten um eine bestimmte Anzahl von Pixeln verschieben.
Der Quellcode ist unten:
quelle
Warum zu viel komplizieren? Die Lösung ist sehr einfach
CSS:
jquery:
Es funktioniert auch wenn,
quelle
Sie können das jQuery-Plugin PositionCalculator verwenden
Dieses Plugin enthält auch eine Kollisionsbehandlung (Flip), sodass das Symbolleisten-ähnliche Menü an einer sichtbaren Position platziert werden kann.
für diesen Aufschlag:
Hier ist die Geige: http://jsfiddle.net/QrrpB/1657/
quelle
Etwas wie das?
quelle
Das funktioniert bei mir:
quelle