Halten Sie die Maus innerhalb eines div
Ich habe ein div, sagen wir 100px,100px Abmessungen onmousedown
ich möchten verschieben Sie ein Objekt innerhalb dieses div-Element und die Maus sollte nicht überall sonst, außer das div so, dass meine Objekte, die sich in den div. Maus wird wieder normal onmouseup
.
Was sollte der javascript-Code halten Sie die Maus innerhalb dieses div nur?
- Sie können nicht den cursor bewegen oder stoppen Sie den cursor mit JS also vielleicht ist dies nicht möglich.
- Diese Frage ist fast 5 Jahre her ist, gibt es eine aktualisierte Lösung?
- vorgeschlagen von Calum, es ist nicht möglich, mit max, den wir kontrollieren können die inneren div-position, wenn es bewegt sich von äußeren div
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht möglich, kontrollieren Sie die Maus-position mit Javascript;, aber Sie können seine position, um das Objekt zu Steuern, dass Sie wollen... hier ein einfacher code, der fast hierzu:
Unmöglich, leider... oder glücklicherweise, wenn Sie denken, was für etwas Werbung machen könnte mit ihm.
Edit: gefunden diese Diskussion, wo jemand behauptet, einen Roman Abhilfe Bewegen Sie Die Maus Cursor Javascript
Wie die anderen Jungs sagen, Sie können keine Einschränkung für das Maus-cursor auf einen bestimmten Bereich. Vielleicht ist das aber auch nicht, was Sie wollen. Blick auf das jQuery-UI-demo: Beschränken Der Bewegung. Es erzielt die gewünschte Wirkung durch das halten des inneren Objekts in der übergeordneten Objekts (siehe Kasten sagt: "ich bin darin enthaltenen meine Eltern").
wenn Sie möchten, eine kreative Lösung, heres ein, dass youl finden, sehr kreativ:
1: verwenden Sie [element].requestPointerLock()
2: erstellen Sie ein neues Bild mit einem Mauszeiger. (hier ist eine, die Sie mögen)
3: erstellen von 2 neuen Variablen x und y, und verriegeln Sie die position des Bildes zu Ihnen.
4: schreiben:
5: geben Sie einige if-Anweisungen zu halten, die Maus-Bild in das element. stellen Sie sicher, dass die if-Anweisungen " innerhalb der eventlistener oben:
stellen Sie sicher, dass Sie ersetzen "element" mit dem Namen der Variablen speichern Ihrem element, wenn Sie beabsichtigen, mit genau diesem code.
und vergessen Sie nicht, aktualisieren Sie die position des Elements durch zuweisen von x-und y Ihre position jedes mal, wenn Sie es verwenden. versuchen Sie den folgenden code ein. es hat all diese Schritte umgesetzt und getestet. klicken Sie einfach auf den Bildschirm, um zu starten, und drücken Sie [Esc], um es auszuschalten.
können Sie nicht kontrollieren, die Mausposition mit javascript, die einzige Sache, die Sie tun können, ist zu Lesen, die Maus-position und darauf zu reagieren. Vielleicht können Sie die div, so dass es immer unter der Maus?
Können Sie nicht beschränken Sie die Maus.
Aber wenn Sie einschränken möchten ein anderes Objekt (zum Beispiel eine, die gezogen wird, indem die Maus) Sie können. Aber Sie brauchen mehr Informationen, was und wie Sie versuchen zu tun..
Ist das völlig unmöglich, und Sie sollten dankbar dafür sein. Ihre Maus ist in Ihrem system das primäre Eingang, und wenn die Browser waren in der Lage zu kontrollieren oder zu requirieren, es gibt praktisch nichts, was eine Seite nicht tun konnte.
Es ist jedoch möglich, zu beschränken, ein gezogenes Objekt innerhalb eines anderen DIV - jQueryUI ' s draggable(), zum Beispiel, macht das unglaublich einfach.
Scheine ich gefunden zu haben, der einen workaround für mein Projekt.
Habe ich Folgendes:
1. Mit dem CSS deaktivieren der Standard-click-Ereignis für jedes element in Ihrem Dokument.
2. Für den Körper:
cursor:none;
.3. Eine
position:fixed;
div Funktion als pseudo-Maus.4. JQuery verwenden, um track-Maus Geschwindigkeit und damit poisition Ihre pseudo-Maus.
5. Von dort aus arbeiten.
Warnung: Ihre real Maus noch funktionieren, die normalerweise außerhalb Ihrer Webseite. Meine Absicht war nicht erforderlich, dass Sie auf eine Komponente und damit gearbeitet.